picocode 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pico.js +323 -32
- package/package.json +2 -2
package/dist/pico.js
CHANGED
|
@@ -1654,7 +1654,7 @@ function hydrateImages(history) {
|
|
|
1654
1654
|
)
|
|
1655
1655
|
);
|
|
1656
1656
|
}
|
|
1657
|
-
async function compactHistory({ history, modelName, auth, prompt, signal }) {
|
|
1657
|
+
async function compactHistory({ history, modelName, auth, prompt, signal, onStream }) {
|
|
1658
1658
|
const out = await compose(
|
|
1659
1659
|
model({
|
|
1660
1660
|
model: modelName,
|
|
@@ -1664,11 +1664,20 @@ async function compactHistory({ history, modelName, auth, prompt, signal }) {
|
|
|
1664
1664
|
)({
|
|
1665
1665
|
history: [...history.filter((m) => m.role !== "system"), { role: "user", content: prompt }],
|
|
1666
1666
|
tools: [],
|
|
1667
|
-
abortSignal: signal
|
|
1667
|
+
abortSignal: signal,
|
|
1668
|
+
...onStream && { stream: onStream }
|
|
1668
1669
|
});
|
|
1669
1670
|
if (signal?.aborted) throw new Error("compaction cancelled");
|
|
1670
1671
|
return getText(out.lastResponse?.content || "").trim();
|
|
1671
1672
|
}
|
|
1673
|
+
function compactProgress(streamed) {
|
|
1674
|
+
const chars = streamed.length;
|
|
1675
|
+
const afterAnalysis = streamed.split("</analysis>")[1] ?? streamed.split("<summary>")[1];
|
|
1676
|
+
if (afterAnalysis === void 0) return { phase: "analyzing", section: 0, chars };
|
|
1677
|
+
const sections = (afterAnalysis.match(/^\s*\d+\.\s/gm) || []).length;
|
|
1678
|
+
if (sections === 0) return { phase: "analyzing", section: 0, chars };
|
|
1679
|
+
return { phase: "writing", section: Math.min(8, sections), chars };
|
|
1680
|
+
}
|
|
1672
1681
|
async function summarizeText({ text, modelName }) {
|
|
1673
1682
|
const out = await compose(
|
|
1674
1683
|
model({
|
|
@@ -2760,6 +2769,50 @@ init_catalog();
|
|
|
2760
2769
|
init_codex_models();
|
|
2761
2770
|
init_openai_auth();
|
|
2762
2771
|
init_config();
|
|
2772
|
+
|
|
2773
|
+
// src/core/terminal-theme.js
|
|
2774
|
+
function parseOsc11(response) {
|
|
2775
|
+
const match = response.match(/\]11;rgb:([0-9a-f]+)\/([0-9a-f]+)\/([0-9a-f]+)/i);
|
|
2776
|
+
if (!match) return null;
|
|
2777
|
+
const channel = (hex) => parseInt(hex, 16) / (16 ** hex.length - 1);
|
|
2778
|
+
const luminance = 0.2126 * channel(match[1]) + 0.7152 * channel(match[2]) + 0.0722 * channel(match[3]);
|
|
2779
|
+
return luminance > 0.5 ? "light" : "dark";
|
|
2780
|
+
}
|
|
2781
|
+
function themeFromColorfgbg(value) {
|
|
2782
|
+
const token = (value || "").split(";").at(-1);
|
|
2783
|
+
if (!/^\d+$/.test(token)) return null;
|
|
2784
|
+
const bg = Number(token);
|
|
2785
|
+
return bg === 7 || bg === 15 ? "light" : "dark";
|
|
2786
|
+
}
|
|
2787
|
+
function detectTerminalTheme({ timeoutMs = 150 } = {}) {
|
|
2788
|
+
const fallback = () => themeFromColorfgbg(process.env.COLORFGBG) || "dark";
|
|
2789
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) return Promise.resolve(fallback());
|
|
2790
|
+
return new Promise((resolve7) => {
|
|
2791
|
+
let buffer = "";
|
|
2792
|
+
let settled = false;
|
|
2793
|
+
const wasRaw = process.stdin.isRaw;
|
|
2794
|
+
const finish = (theme2) => {
|
|
2795
|
+
if (settled) return;
|
|
2796
|
+
settled = true;
|
|
2797
|
+
clearTimeout(timer);
|
|
2798
|
+
process.stdin.off("data", onData);
|
|
2799
|
+
process.stdin.setRawMode(wasRaw);
|
|
2800
|
+
resolve7(theme2);
|
|
2801
|
+
};
|
|
2802
|
+
const onData = (chunk) => {
|
|
2803
|
+
buffer += chunk.toString("latin1");
|
|
2804
|
+
const theme2 = parseOsc11(buffer);
|
|
2805
|
+
if (theme2) finish(theme2);
|
|
2806
|
+
};
|
|
2807
|
+
const timer = setTimeout(() => finish(fallback()), timeoutMs);
|
|
2808
|
+
process.stdin.setRawMode(true);
|
|
2809
|
+
process.stdin.on("data", onData);
|
|
2810
|
+
process.stdin.resume();
|
|
2811
|
+
process.stdout.write("\x1B]11;?\x1B\\");
|
|
2812
|
+
});
|
|
2813
|
+
}
|
|
2814
|
+
|
|
2815
|
+
// src/main.jsx
|
|
2763
2816
|
init_boot();
|
|
2764
2817
|
init_shells();
|
|
2765
2818
|
|
|
@@ -2812,7 +2865,7 @@ import { existsSync as existsSync4 } from "node:fs";
|
|
|
2812
2865
|
import { writeFile as writeFile10 } from "node:fs/promises";
|
|
2813
2866
|
import { homedir as homedir4 } from "node:os";
|
|
2814
2867
|
import { join as join13 } from "node:path";
|
|
2815
|
-
import { createSignal as createSignal4, Menu as Menu2, ScrollBox as ScrollBox3, Shimmer, TextArea, useFocus as useFocus2, useFocusTrap, useInput as useInput3, useSelection, useToast } from "@trendr/core";
|
|
2868
|
+
import { createSignal as createSignal4, Menu as Menu2, ProgressBar, ScrollBox as ScrollBox3, Shimmer, TextArea, useFocus as useFocus2, useFocusTrap, useInput as useInput3, useSelection, useToast } from "@trendr/core";
|
|
2816
2869
|
|
|
2817
2870
|
// src/core/history.js
|
|
2818
2871
|
init_paths();
|
|
@@ -3043,7 +3096,93 @@ async function listFiles(cwd) {
|
|
|
3043
3096
|
|
|
3044
3097
|
// src/ui/highlight.js
|
|
3045
3098
|
import { codeToANSI } from "@shikijs/cli";
|
|
3099
|
+
import { createSignal as createSignal2 } from "@trendr/core";
|
|
3100
|
+
|
|
3101
|
+
// src/ui/theme.js
|
|
3046
3102
|
import { createSignal } from "@trendr/core";
|
|
3103
|
+
var PALETTES = {
|
|
3104
|
+
dark: {
|
|
3105
|
+
desc: "light text for dark terminals",
|
|
3106
|
+
accent: "#6BE795",
|
|
3107
|
+
fg: "#e5e7eb",
|
|
3108
|
+
fgSoft: "#9ca3af",
|
|
3109
|
+
muted: "#6b7280",
|
|
3110
|
+
faint: "#4b5563",
|
|
3111
|
+
panelBg: "#1e1e22",
|
|
3112
|
+
selectBg: "#374151",
|
|
3113
|
+
red: "#f87171",
|
|
3114
|
+
highlight: "#ffffff",
|
|
3115
|
+
shiki: "nord"
|
|
3116
|
+
},
|
|
3117
|
+
light: {
|
|
3118
|
+
desc: "dark text for light terminals",
|
|
3119
|
+
accent: "#0f9d63",
|
|
3120
|
+
fg: "#1f2430",
|
|
3121
|
+
fgSoft: "#4b5563",
|
|
3122
|
+
muted: "#6b7280",
|
|
3123
|
+
faint: "#a3a8b3",
|
|
3124
|
+
panelBg: "#e9e9ee",
|
|
3125
|
+
selectBg: "#d4d4dc",
|
|
3126
|
+
red: "#dc2626",
|
|
3127
|
+
highlight: "#111827",
|
|
3128
|
+
shiki: "github-light"
|
|
3129
|
+
},
|
|
3130
|
+
nord: {
|
|
3131
|
+
desc: "arctic blues on polar night",
|
|
3132
|
+
accent: "#88c0d0",
|
|
3133
|
+
fg: "#d8dee9",
|
|
3134
|
+
fgSoft: "#aab2c4",
|
|
3135
|
+
muted: "#7b88a1",
|
|
3136
|
+
faint: "#616e88",
|
|
3137
|
+
panelBg: "#3b4252",
|
|
3138
|
+
selectBg: "#434c5e",
|
|
3139
|
+
red: "#bf616a",
|
|
3140
|
+
highlight: "#eceff4",
|
|
3141
|
+
shiki: "nord"
|
|
3142
|
+
}
|
|
3143
|
+
};
|
|
3144
|
+
var DEFAULT_ACCENT = PALETTES.dark.accent;
|
|
3145
|
+
var FG = PALETTES.dark.fg;
|
|
3146
|
+
var FG_SOFT = PALETTES.dark.fgSoft;
|
|
3147
|
+
var MUTED = PALETTES.dark.muted;
|
|
3148
|
+
var FAINT = PALETTES.dark.faint;
|
|
3149
|
+
var PANEL_BG = PALETTES.dark.panelBg;
|
|
3150
|
+
var SELECT_BG = PALETTES.dark.selectBg;
|
|
3151
|
+
var RED = PALETTES.dark.red;
|
|
3152
|
+
var HIGHLIGHT = PALETTES.dark.highlight;
|
|
3153
|
+
var currentPalette = "dark";
|
|
3154
|
+
var explicitAccent = null;
|
|
3155
|
+
var [accentValue, setAccentValue] = createSignal(DEFAULT_ACCENT);
|
|
3156
|
+
var accent = accentValue;
|
|
3157
|
+
function setAccent(color) {
|
|
3158
|
+
explicitAccent = color || null;
|
|
3159
|
+
setAccentValue(explicitAccent || DEFAULT_ACCENT);
|
|
3160
|
+
}
|
|
3161
|
+
function setPalette(name) {
|
|
3162
|
+
currentPalette = PALETTES[name] ? name : "dark";
|
|
3163
|
+
const p = PALETTES[currentPalette];
|
|
3164
|
+
DEFAULT_ACCENT = p.accent;
|
|
3165
|
+
FG = p.fg;
|
|
3166
|
+
FG_SOFT = p.fgSoft;
|
|
3167
|
+
MUTED = p.muted;
|
|
3168
|
+
FAINT = p.faint;
|
|
3169
|
+
PANEL_BG = p.panelBg;
|
|
3170
|
+
SELECT_BG = p.selectBg;
|
|
3171
|
+
RED = p.red;
|
|
3172
|
+
HIGHLIGHT = p.highlight;
|
|
3173
|
+
setAccentValue(explicitAccent || p.accent);
|
|
3174
|
+
}
|
|
3175
|
+
function paletteName() {
|
|
3176
|
+
return currentPalette;
|
|
3177
|
+
}
|
|
3178
|
+
function paletteList() {
|
|
3179
|
+
return Object.entries(PALETTES).map(([key, p]) => ({ key, desc: p.desc }));
|
|
3180
|
+
}
|
|
3181
|
+
function shikiTheme() {
|
|
3182
|
+
return PALETTES[currentPalette].shiki;
|
|
3183
|
+
}
|
|
3184
|
+
|
|
3185
|
+
// src/ui/highlight.js
|
|
3047
3186
|
var LANGS = {
|
|
3048
3187
|
js: "js",
|
|
3049
3188
|
mjs: "js",
|
|
@@ -3081,22 +3220,24 @@ function langForPath(path) {
|
|
|
3081
3220
|
var cache = /* @__PURE__ */ new Map();
|
|
3082
3221
|
var pending = /* @__PURE__ */ new Set();
|
|
3083
3222
|
var failed = /* @__PURE__ */ new Set();
|
|
3084
|
-
var [version, setVersion] =
|
|
3223
|
+
var [version, setVersion] = createSignal2(0);
|
|
3085
3224
|
var highlightVersion = version;
|
|
3086
3225
|
function highlight(code, lang) {
|
|
3087
3226
|
const safeLang = lang && !failed.has(lang) ? lang : "txt";
|
|
3227
|
+
const theme2 = shikiTheme();
|
|
3088
3228
|
return code.split("\n").map((line) => {
|
|
3089
|
-
const key = `${
|
|
3229
|
+
const key = `${theme2}
|
|
3230
|
+
${safeLang}
|
|
3090
3231
|
${line}`;
|
|
3091
3232
|
if (cache.has(key)) return cache.get(key);
|
|
3092
|
-
warm(line, safeLang, key);
|
|
3233
|
+
warm(line, safeLang, theme2, key);
|
|
3093
3234
|
return line;
|
|
3094
3235
|
}).join("\n");
|
|
3095
3236
|
}
|
|
3096
|
-
function warm(line, lang, key) {
|
|
3237
|
+
function warm(line, lang, theme2, key) {
|
|
3097
3238
|
if (pending.has(key)) return;
|
|
3098
3239
|
pending.add(key);
|
|
3099
|
-
codeToANSI(line, lang,
|
|
3240
|
+
codeToANSI(line, lang, theme2).then((ansi) => cache.set(key, ansi.replace(/\n$/, ""))).catch(() => {
|
|
3100
3241
|
failed.add(lang);
|
|
3101
3242
|
cache.set(key, line);
|
|
3102
3243
|
}).finally(() => {
|
|
@@ -3107,24 +3248,6 @@ function warm(line, lang, key) {
|
|
|
3107
3248
|
|
|
3108
3249
|
// src/ui/transcript.jsx
|
|
3109
3250
|
import { Diff, Markdown, Spinner } from "@trendr/core";
|
|
3110
|
-
|
|
3111
|
-
// src/ui/theme.js
|
|
3112
|
-
import { createSignal as createSignal2 } from "@trendr/core";
|
|
3113
|
-
var DEFAULT_ACCENT = "#6BE795";
|
|
3114
|
-
var [accentValue, setAccentValue] = createSignal2(DEFAULT_ACCENT);
|
|
3115
|
-
var accent = accentValue;
|
|
3116
|
-
function setAccent(color) {
|
|
3117
|
-
setAccentValue(color || DEFAULT_ACCENT);
|
|
3118
|
-
}
|
|
3119
|
-
var FG = "#e5e7eb";
|
|
3120
|
-
var FG_SOFT = "#9ca3af";
|
|
3121
|
-
var MUTED = "#6b7280";
|
|
3122
|
-
var FAINT = "#4b5563";
|
|
3123
|
-
var PANEL_BG = "#1e1e22";
|
|
3124
|
-
var SELECT_BG = "#374151";
|
|
3125
|
-
var RED = "#f87171";
|
|
3126
|
-
|
|
3127
|
-
// src/ui/transcript.jsx
|
|
3128
3251
|
init_recorder();
|
|
3129
3252
|
import { jsx, jsxs } from "@trendr/core/jsx-runtime";
|
|
3130
3253
|
function ToolCard({ name, title, status, diff, revert, fullOutput, error, background, verbose }) {
|
|
@@ -3226,7 +3349,7 @@ function Message({ item, verbose }) {
|
|
|
3226
3349
|
if (item.kind === "user") {
|
|
3227
3350
|
return /* @__PURE__ */ jsxs("box", { style: { flexDirection: "column" }, children: [
|
|
3228
3351
|
/* @__PURE__ */ jsx("text", { children: " " }),
|
|
3229
|
-
/* @__PURE__ */ jsx("box", { style: { bg: PANEL_BG, flexDirection: "column", paddingX: 2, paddingY: 1 }, children: /* @__PURE__ */ jsx("text", { style: { color:
|
|
3352
|
+
/* @__PURE__ */ jsx("box", { style: { bg: PANEL_BG, flexDirection: "column", paddingX: 2, paddingY: 1 }, children: /* @__PURE__ */ jsx("text", { style: { color: FG }, children: item.text }) })
|
|
3230
3353
|
] });
|
|
3231
3354
|
}
|
|
3232
3355
|
const text = item.interrupted ? `${item.text} *(interrupted)*` : item.text;
|
|
@@ -3295,12 +3418,18 @@ The agent saves durable facts with the remember tool: one file per memory under
|
|
|
3295
3418
|
|
|
3296
3419
|
The agent can schedule one-time wake-ups for itself with the schedule_wakeup tool: after the delay it receives its own note as a system notification and acts on it. Recurring loops are just the agent rescheduling at the end of each wake-up. \`/wakeups\` lists pending ones with live countdowns; enter or \`k\` cancels. A \`\u23F0 N\` in the footer shows how many are pending. Wake-ups live in memory and are lost when pico exits.
|
|
3297
3420
|
|
|
3421
|
+
## Appearance
|
|
3422
|
+
|
|
3423
|
+
pico picks a light or dark palette at startup by asking the terminal for its background color (OSC 11), so it matches whatever theme your terminal uses. \`/theme\` opens a picker that previews each theme as you move and persists your choice in \`~/.pico/config.json\`; \`/theme light\`, \`/theme dark\`, or \`/theme auto\` applies one directly. \`/color\` tints a single session's accent and is independent of the palette.
|
|
3424
|
+
|
|
3298
3425
|
## Context
|
|
3299
3426
|
|
|
3300
3427
|
pico reads AGENTS.md files automatically: a global one from ~/.pico, then every ancestor of your working directory up to the git root. Deeper files win. AGENTS.md files in subdirectories load lazily the first time a tool touches that subtree.
|
|
3301
3428
|
|
|
3302
3429
|
Sessions are stored under ~/.pico as jsonl event logs; \`/resume\` folds one back into exactly this view.
|
|
3303
3430
|
|
|
3431
|
+
\`/context\` breaks down what the next request will contain - system prompt, tool schemas, project instructions, memory index, compaction summary, and conversation - with an estimated size for each piece next to the provider-measured total.
|
|
3432
|
+
|
|
3304
3433
|
The footer's \`ctx %\` shows how full the model's context is. At 85% pico auto-compacts: the older conversation is summarized in a structured form, the most recent turns are kept verbatim, and the model is told where the full session file lives so it can read exact details back on demand. Nothing visible changes in the transcript, and rewind still works across it. \`/compact\` runs it manually and takes optional focus instructions (\`/compact focus on the API changes\`). Set \`"autoCompact": false\` in \`~/.pico/config.json\` to disable the automatic trigger.
|
|
3305
3434
|
|
|
3306
3435
|
---
|
|
@@ -3577,6 +3706,31 @@ function EffortPanel({ levels, current, defaultLevel, focused, onPick, onPickDef
|
|
|
3577
3706
|
}
|
|
3578
3707
|
) }) });
|
|
3579
3708
|
}
|
|
3709
|
+
function ThemePanel({ themes, pref, focused, onPick, onPreview, onClose }) {
|
|
3710
|
+
const [cursor, setCursor] = createSignal3(Math.max(0, themes.findIndex((t) => t.key === pref)));
|
|
3711
|
+
return /* @__PURE__ */ jsx3(PanelFrame, { title: "Theme", hint: "j/k to move and preview \xB7 enter to apply \xB7 esc: close", children: /* @__PURE__ */ jsx3("box", { style: { flexDirection: "column", marginTop: 1 }, children: /* @__PURE__ */ jsx3(
|
|
3712
|
+
Menu,
|
|
3713
|
+
{
|
|
3714
|
+
items: themes,
|
|
3715
|
+
selected: cursor(),
|
|
3716
|
+
onSelect: (i) => {
|
|
3717
|
+
setCursor(i);
|
|
3718
|
+
onPreview(themes[i]);
|
|
3719
|
+
},
|
|
3720
|
+
focused,
|
|
3721
|
+
maxVisible: 6,
|
|
3722
|
+
vimKeys: true,
|
|
3723
|
+
onSubmit: onPick,
|
|
3724
|
+
onCancel: onClose,
|
|
3725
|
+
renderItem: (t, { active }) => /* @__PURE__ */ jsxs3("box", { style: { flexDirection: "row" }, children: [
|
|
3726
|
+
/* @__PURE__ */ jsx3("text", { style: { color: accent() }, children: active ? "\u203A " : " " }),
|
|
3727
|
+
/* @__PURE__ */ jsx3("text", { style: { color: active ? accent() : FG }, children: t.key.padEnd(10) }),
|
|
3728
|
+
/* @__PURE__ */ jsx3("text", { style: { color: FAINT }, children: t.desc }),
|
|
3729
|
+
t.key === pref && /* @__PURE__ */ jsx3("text", { style: { color: active ? accent() : MUTED }, children: " \u2713" })
|
|
3730
|
+
] })
|
|
3731
|
+
}
|
|
3732
|
+
) }) });
|
|
3733
|
+
}
|
|
3580
3734
|
function InfoListPanel({ title, rows, focused, onClose }) {
|
|
3581
3735
|
useEscape(() => focused, onClose);
|
|
3582
3736
|
return /* @__PURE__ */ jsx3(PanelFrame, { title, hint: "j/k or \u2191\u2193 to scroll \xB7 esc close", children: /* @__PURE__ */ jsx3("box", { style: { flexDirection: "column", height: 14, marginTop: 1 }, children: rows.length === 0 ? /* @__PURE__ */ jsx3("text", { style: { color: FAINT }, children: "nothing here yet" }) : /* @__PURE__ */ jsx3(ScrollBox2, { style: { flexGrow: 1 }, focused, scrollbar: true, children: rows.map((row, i) => /* @__PURE__ */ jsxs3("box", { style: { flexDirection: "column", marginTop: i === 0 ? 0 : 1 }, children: [
|
|
@@ -3946,6 +4100,7 @@ var COMMANDS = [
|
|
|
3946
4100
|
{ name: "rewind", desc: "Restore the conversation to a previous message" },
|
|
3947
4101
|
{ name: "rename", desc: "Name this session: /rename <name>" },
|
|
3948
4102
|
{ name: "color", desc: "Color this session: /color <name or #hex>" },
|
|
4103
|
+
{ name: "theme", desc: "Pick a color theme; /theme <name> applies one directly" },
|
|
3949
4104
|
{ name: "mcp", desc: "Manage MCP servers: add, toggle, reconnect" },
|
|
3950
4105
|
{ name: "shells", desc: "View and manage background shells" },
|
|
3951
4106
|
{ name: "wakeups", desc: "View and cancel scheduled wake-ups" },
|
|
@@ -3953,6 +4108,7 @@ var COMMANDS = [
|
|
|
3953
4108
|
{ name: "compact", desc: "Summarize the conversation to free the context window" },
|
|
3954
4109
|
{ name: "clear", desc: "Clear the conversation and free the context window" },
|
|
3955
4110
|
{ name: "cost", desc: "Show token usage and estimated cost so far" },
|
|
4111
|
+
{ name: "context", desc: "Show what's in the model's context and how big each piece is" },
|
|
3956
4112
|
{ name: "export", desc: "Save the current conversation to a markdown file" },
|
|
3957
4113
|
{ name: "help", desc: "List every command and what it does" }
|
|
3958
4114
|
];
|
|
@@ -3978,6 +4134,7 @@ function App({ boot: boot2 }) {
|
|
|
3978
4134
|
const [thinkingNow, setThinkingNow] = createSignal4(false);
|
|
3979
4135
|
const [busy, setBusy] = createSignal4(false);
|
|
3980
4136
|
const [compacting, setCompacting] = createSignal4(false);
|
|
4137
|
+
const [compactStatus, setCompactStatus] = createSignal4(null);
|
|
3981
4138
|
const [startedAt, setStartedAt] = createSignal4(0);
|
|
3982
4139
|
const [input, setInput] = createSignal4("");
|
|
3983
4140
|
const [model2, setModel] = createSignal4(boot2.initialModel);
|
|
@@ -3985,6 +4142,8 @@ function App({ boot: boot2 }) {
|
|
|
3985
4142
|
const [effort, setEffort] = createSignal4(boot2.initialEffort);
|
|
3986
4143
|
const [defaultEffort, setDefaultEffort] = createSignal4(boot2.initialEffort);
|
|
3987
4144
|
const [showEffortPanel, setShowEffortPanel] = createSignal4(false);
|
|
4145
|
+
const [showThemePanel, setShowThemePanel] = createSignal4(false);
|
|
4146
|
+
const [themePref, setThemePref] = createSignal4(boot2.themePref || "auto");
|
|
3988
4147
|
const [queued, setQueued] = createSignal4([]);
|
|
3989
4148
|
const [sent, setSent] = createSignal4([]);
|
|
3990
4149
|
const [histIdx, setHistIdx] = createSignal4(-1);
|
|
@@ -4139,14 +4298,21 @@ ${tail}` : ""),
|
|
|
4139
4298
|
refs.abort = controller;
|
|
4140
4299
|
setBusy(true);
|
|
4141
4300
|
setCompacting(true);
|
|
4301
|
+
setCompactStatus(null);
|
|
4142
4302
|
setStartedAt(Date.now());
|
|
4303
|
+
let streamed = "";
|
|
4143
4304
|
try {
|
|
4144
4305
|
const raw = await compactHistory({
|
|
4145
4306
|
history: state.providerHistory,
|
|
4146
4307
|
modelName: model2().name,
|
|
4147
4308
|
auth,
|
|
4148
4309
|
prompt: compactionPrompt(instructions),
|
|
4149
|
-
signal: controller.signal
|
|
4310
|
+
signal: controller.signal,
|
|
4311
|
+
onStream: (event) => {
|
|
4312
|
+
if (event.type !== "content") return;
|
|
4313
|
+
streamed += event.content;
|
|
4314
|
+
setCompactStatus(compactProgress(streamed));
|
|
4315
|
+
}
|
|
4150
4316
|
});
|
|
4151
4317
|
const summary = formatCompactSummary(raw);
|
|
4152
4318
|
if (!summary) throw new Error("empty summary");
|
|
@@ -4158,6 +4324,7 @@ ${tail}` : ""),
|
|
|
4158
4324
|
else flash(`compact failed: ${String(err.message || err).slice(0, 100)}`);
|
|
4159
4325
|
} finally {
|
|
4160
4326
|
setCompacting(false);
|
|
4327
|
+
setCompactStatus(null);
|
|
4161
4328
|
setBusy(false);
|
|
4162
4329
|
refs.abort = null;
|
|
4163
4330
|
}
|
|
@@ -4315,6 +4482,7 @@ ${tail}` : ""),
|
|
|
4315
4482
|
}
|
|
4316
4483
|
function completionSource(name) {
|
|
4317
4484
|
if (name === "color") return Object.keys(SESSION_COLORS);
|
|
4485
|
+
if (name === "theme") return [...paletteList().map((p) => p.key), "auto"];
|
|
4318
4486
|
if (name === "effort") return ["default", "low", "medium", "high", "max"];
|
|
4319
4487
|
if (name === "model") return models2.filter((m) => m.available !== false).map((m) => m.name);
|
|
4320
4488
|
const cmd = allCommands.find((c) => c.name === name);
|
|
@@ -4356,6 +4524,96 @@ ${tail}` : ""),
|
|
|
4356
4524
|
if (!busy()) return;
|
|
4357
4525
|
refs.abort?.abort();
|
|
4358
4526
|
}
|
|
4527
|
+
const fmtTokens = (n) => n >= 1e3 ? `${(n / 1e3).toFixed(1)}k` : String(n);
|
|
4528
|
+
async function openContextPanel() {
|
|
4529
|
+
const est = (text) => Math.round(String(text).length / 4);
|
|
4530
|
+
const tok = (n) => `~${fmtTokens(n)} tok`;
|
|
4531
|
+
const state = derived();
|
|
4532
|
+
const memoryIndexText = memoryIndex(await boot2.memory.list().catch(() => []), boot2.root);
|
|
4533
|
+
const skillList = boot2.skills.list();
|
|
4534
|
+
const files = startupContext.files;
|
|
4535
|
+
const systemFull = buildSystemPrompt({ cwd, contextFiles: files, skills: skillList, memoryIndexText });
|
|
4536
|
+
const systemBase = buildSystemPrompt({ cwd, contextFiles: [], skills: [], memoryIndexText: "" });
|
|
4537
|
+
const userToolScan = await scanUserTools({ cwd, root: boot2.root }).catch(() => ({ tools: [], errors: [] }));
|
|
4538
|
+
const { tools } = createToolset({
|
|
4539
|
+
cwd,
|
|
4540
|
+
tracker,
|
|
4541
|
+
skills: boot2.skills,
|
|
4542
|
+
shells: boot2.shells,
|
|
4543
|
+
wakeups: boot2.wakeups,
|
|
4544
|
+
memory: boot2.memory,
|
|
4545
|
+
mcpTools: mcp.tools(),
|
|
4546
|
+
userTools: userToolScan.tools
|
|
4547
|
+
});
|
|
4548
|
+
const toolTokens = est(JSON.stringify(tools));
|
|
4549
|
+
const history = state.providerHistory;
|
|
4550
|
+
const compacted = history[0]?.role === "user" && state.historyEventIds[0] === null && String(history[0].content).startsWith("[system notification] The earlier portion");
|
|
4551
|
+
const summaryTokens = compacted ? est(history[0].content) : 0;
|
|
4552
|
+
const messages = compacted ? history.slice(1) : history;
|
|
4553
|
+
const messageTokens = est(JSON.stringify(messages));
|
|
4554
|
+
const rows = [
|
|
4555
|
+
{ name: "system prompt", desc: "identity, environment, tool guidance", note: tok(est(systemBase)) },
|
|
4556
|
+
{ name: `tool schemas (${tools.length})`, desc: tools.map((t) => t.name).join(" \xB7 "), note: tok(toolTokens) }
|
|
4557
|
+
];
|
|
4558
|
+
if (files.length) {
|
|
4559
|
+
rows.push({
|
|
4560
|
+
name: `project instructions (${files.length})`,
|
|
4561
|
+
desc: files.map((f) => f.path.replace(`${boot2.root}/`, "")).join(", "),
|
|
4562
|
+
note: tok(files.reduce((sum, f) => sum + est(f.content), 0))
|
|
4563
|
+
});
|
|
4564
|
+
}
|
|
4565
|
+
if (skillList.length) {
|
|
4566
|
+
rows.push({
|
|
4567
|
+
name: `skills index (${skillList.length})`,
|
|
4568
|
+
desc: skillList.map((s) => s.name).join(", "),
|
|
4569
|
+
note: tok(est(skillList.map((s) => `- ${s.name}: ${s.description}`).join("\n")))
|
|
4570
|
+
});
|
|
4571
|
+
}
|
|
4572
|
+
if (memoryIndexText) {
|
|
4573
|
+
rows.push({ name: "memory index", desc: "one line per saved memory", note: tok(est(memoryIndexText)) });
|
|
4574
|
+
}
|
|
4575
|
+
if (compacted) {
|
|
4576
|
+
rows.push({ name: "compaction summary", desc: "stands in for everything before the last compact", note: tok(summaryTokens) });
|
|
4577
|
+
}
|
|
4578
|
+
rows.push({
|
|
4579
|
+
name: `conversation (${messages.length} messages)`,
|
|
4580
|
+
desc: compacted ? "kept verbatim since the last compact" : "every message this session",
|
|
4581
|
+
note: tok(messageTokens)
|
|
4582
|
+
});
|
|
4583
|
+
const total = est(systemFull) + toolTokens + summaryTokens + messageTokens;
|
|
4584
|
+
const limit = model2().context;
|
|
4585
|
+
rows.push({
|
|
4586
|
+
name: "estimated next request",
|
|
4587
|
+
desc: limit ? `of ${fmtTokens(limit)} context \xB7 ~${Math.round(total / limit * 100)}%` : "context size unknown for this model",
|
|
4588
|
+
note: tok(total)
|
|
4589
|
+
});
|
|
4590
|
+
if (state.lastPromptTokens && state.lastPromptModel === model2().name) {
|
|
4591
|
+
rows.push({
|
|
4592
|
+
name: "last measured request",
|
|
4593
|
+
desc: "provider-reported input tokens, the number behind ctx %",
|
|
4594
|
+
note: `${state.lastPromptTokens.toLocaleString()} tok`
|
|
4595
|
+
});
|
|
4596
|
+
}
|
|
4597
|
+
setInfoPanel({ title: `Context \xB7 ${model2().name}`, rows });
|
|
4598
|
+
}
|
|
4599
|
+
const themeItems = () => [
|
|
4600
|
+
...paletteList(),
|
|
4601
|
+
{ key: "auto", desc: `follow the terminal (detected: ${boot2.detectedTheme || "dark"})` }
|
|
4602
|
+
];
|
|
4603
|
+
function paletteFor(pref) {
|
|
4604
|
+
return pref === "auto" ? boot2.detectedTheme || "dark" : pref;
|
|
4605
|
+
}
|
|
4606
|
+
function previewPalette(pref) {
|
|
4607
|
+
setPalette(paletteFor(pref));
|
|
4608
|
+
boot2.setTheme?.({ accent: accent() });
|
|
4609
|
+
}
|
|
4610
|
+
function applyThemePref(pref) {
|
|
4611
|
+
setThemePref(pref);
|
|
4612
|
+
previewPalette(pref);
|
|
4613
|
+
writeConfig({ theme: pref === "auto" ? void 0 : pref }).catch(() => {
|
|
4614
|
+
});
|
|
4615
|
+
flash(pref === "auto" ? `theme: auto \xB7 following the terminal (${paletteFor("auto")})` : `theme: ${pref}`);
|
|
4616
|
+
}
|
|
4359
4617
|
async function runCommand(c, args = "") {
|
|
4360
4618
|
if (typeof args !== "string") args = "";
|
|
4361
4619
|
setInput("");
|
|
@@ -4386,6 +4644,14 @@ ${tail}` : ""),
|
|
|
4386
4644
|
flash(`session color: ${name || value}`);
|
|
4387
4645
|
return;
|
|
4388
4646
|
}
|
|
4647
|
+
if (c.name === "theme") {
|
|
4648
|
+
if (!args) return setShowThemePanel(true);
|
|
4649
|
+
const choice = args.toLowerCase();
|
|
4650
|
+
const valid = [...paletteList().map((p) => p.key), "auto"];
|
|
4651
|
+
if (!valid.includes(choice)) return flash(`theme: ${paletteName()} \xB7 /theme <${valid.join("|")}>`);
|
|
4652
|
+
applyThemePref(choice);
|
|
4653
|
+
return;
|
|
4654
|
+
}
|
|
4389
4655
|
if (c.skill) {
|
|
4390
4656
|
const body = await skills.load(c.name);
|
|
4391
4657
|
if (!body) return flash(`could not load skill ${c.name}`);
|
|
@@ -4423,6 +4689,7 @@ ${body}`);
|
|
|
4423
4689
|
if (!EFFORT_LEVELS.some((l) => l.key === level)) return flash("usage: /effort <default|low|medium|high|max>");
|
|
4424
4690
|
return setSessionEffort(level);
|
|
4425
4691
|
}
|
|
4692
|
+
if (c.name === "context") return openContextPanel();
|
|
4426
4693
|
if (c.name === "help") return setView("help");
|
|
4427
4694
|
if (c.name === "mcp") return setShowMcpPanel(true);
|
|
4428
4695
|
if (c.name === "shells") return setShowShellsPanel(true);
|
|
@@ -4721,7 +4988,7 @@ ${body}`);
|
|
|
4721
4988
|
nextId: () => ++refs.imageCount
|
|
4722
4989
|
});
|
|
4723
4990
|
}
|
|
4724
|
-
const anyPanel = () => showModelPanel() || showEffortPanel() || showHistoryPanel() || showResumePanel() || showMcpPanel() || showProjectPanel() || showShellsPanel() || showWakeupsPanel() || showConnectPanel() || infoPanel() !== null || rewindStep() !== null;
|
|
4991
|
+
const anyPanel = () => showModelPanel() || showEffortPanel() || showThemePanel() || showHistoryPanel() || showResumePanel() || showMcpPanel() || showProjectPanel() || showShellsPanel() || showWakeupsPanel() || showConnectPanel() || infoPanel() !== null || rewindStep() !== null;
|
|
4725
4992
|
function killShell(shell) {
|
|
4726
4993
|
if (shell.status !== "running") return flash(`shell ${shell.id} already exited`);
|
|
4727
4994
|
const armed = refs.shellKillArm;
|
|
@@ -4909,6 +5176,7 @@ ${body}`);
|
|
|
4909
5176
|
/* @__PURE__ */ jsx4(
|
|
4910
5177
|
TextArea,
|
|
4911
5178
|
{
|
|
5179
|
+
color: FG,
|
|
4912
5180
|
value: input(),
|
|
4913
5181
|
onChange: (v) => {
|
|
4914
5182
|
const converted = placeholderizeImagePaths(v, {
|
|
@@ -5110,6 +5378,23 @@ ${body}`);
|
|
|
5110
5378
|
onClose: () => setShowEffortPanel(false)
|
|
5111
5379
|
}
|
|
5112
5380
|
),
|
|
5381
|
+
showThemePanel() && /* @__PURE__ */ jsx4(
|
|
5382
|
+
ThemePanel,
|
|
5383
|
+
{
|
|
5384
|
+
themes: themeItems(),
|
|
5385
|
+
pref: themePref(),
|
|
5386
|
+
focused: showThemePanel(),
|
|
5387
|
+
onPick: (t) => {
|
|
5388
|
+
setShowThemePanel(false);
|
|
5389
|
+
applyThemePref(t.key);
|
|
5390
|
+
},
|
|
5391
|
+
onPreview: (t) => previewPalette(t.key),
|
|
5392
|
+
onClose: () => {
|
|
5393
|
+
setShowThemePanel(false);
|
|
5394
|
+
previewPalette(themePref());
|
|
5395
|
+
}
|
|
5396
|
+
}
|
|
5397
|
+
),
|
|
5113
5398
|
showHistoryPanel() && /* @__PURE__ */ jsx4(
|
|
5114
5399
|
HistoryPanel,
|
|
5115
5400
|
{
|
|
@@ -5241,8 +5526,9 @@ ${body}`);
|
|
|
5241
5526
|
),
|
|
5242
5527
|
/* @__PURE__ */ jsxs4("box", { style: { flexDirection: "row", paddingX: 2, gap: 1, marginTop: 1 }, children: [
|
|
5243
5528
|
busy() ? /* @__PURE__ */ jsxs4("box", { style: { flexDirection: "row" }, children: [
|
|
5244
|
-
/* @__PURE__ */ jsx4(Shimmer, { color: accent(), highlight:
|
|
5245
|
-
/* @__PURE__ */ jsx4("text", { style: { color: FAINT }, children: ` (${elapsed}s) \xB7 esc to interrupt` })
|
|
5529
|
+
/* @__PURE__ */ jsx4(Shimmer, { color: accent(), highlight: HIGHLIGHT, duration: 1500, reverse: true, children: compacting() ? compactStatus()?.phase === "writing" ? `Compacting \xB7 writing ${compactStatus().section}/8` : "Compacting \xB7 analyzing" : thinkingNow() ? "Thinking" : "Responding" }),
|
|
5530
|
+
/* @__PURE__ */ jsx4("text", { style: { color: FAINT }, children: ` (${elapsed}s${compactStatus() ? ` \xB7 \u2193 ${fmtTokens(Math.round(compactStatus().chars / 4))} tokens` : ""}) \xB7 esc to interrupt` }),
|
|
5531
|
+
compactStatus()?.phase === "writing" && /* @__PURE__ */ jsx4("box", { style: { flexDirection: "row", marginLeft: 1, width: 16 }, children: /* @__PURE__ */ jsx4(ProgressBar, { variant: "thin", value: compactStatus().section / 8, width: 16, percentage: false, color: accent() }) })
|
|
5246
5532
|
] }) : /* @__PURE__ */ jsx4("text", { style: { color: FAINT, overflow: "truncate" }, children: boot2.displayCwd }),
|
|
5247
5533
|
/* @__PURE__ */ jsx4("box", { style: { flexGrow: 1 } }),
|
|
5248
5534
|
runningShells > 0 && /* @__PURE__ */ jsx4("text", { style: { color: MUTED }, children: `\u2699 ${runningShells}` }),
|
|
@@ -5344,6 +5630,9 @@ var wakeups = createWakeupManager({
|
|
|
5344
5630
|
var bootProject = (cwd) => buildProjectBoot(cwd, { onMcpChange: () => mcpNotify() });
|
|
5345
5631
|
var config = await readConfig();
|
|
5346
5632
|
var configuredDefault = config.defaultModel && models.find((m) => m.name === config.defaultModel);
|
|
5633
|
+
var detectedTheme = await detectTerminalTheme();
|
|
5634
|
+
var themeOverride = paletteList().some((p) => p.key === config.theme) ? config.theme : null;
|
|
5635
|
+
setPalette(themeOverride || detectedTheme);
|
|
5347
5636
|
var theme = { accent: DEFAULT_ACCENT };
|
|
5348
5637
|
var boot = {
|
|
5349
5638
|
...await bootProject(process.cwd()),
|
|
@@ -5352,6 +5641,8 @@ var boot = {
|
|
|
5352
5641
|
models,
|
|
5353
5642
|
providers,
|
|
5354
5643
|
initialModel: configuredDefault || defaultModel(models),
|
|
5644
|
+
detectedTheme,
|
|
5645
|
+
themePref: themeOverride || "auto",
|
|
5355
5646
|
initialEffort: ["low", "medium", "high", "max"].includes(config.defaultEffort) ? config.defaultEffort : null,
|
|
5356
5647
|
autoCompact: config.autoCompact !== false,
|
|
5357
5648
|
refs: {},
|
|
@@ -5377,4 +5668,4 @@ var boot = {
|
|
|
5377
5668
|
var app = mount(() => /* @__PURE__ */ jsx5(App, { boot }), { title: `pico \xB7 ${boot.root.split("/").pop()}`, theme });
|
|
5378
5669
|
boot.setTheme = app.setTheme;
|
|
5379
5670
|
boot.mcp.connectAll();
|
|
5380
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvcmUva2V5cy5qcyIsICIuLi9zcmMvY29yZS9tb2RlbHMuanMiLCAiLi4vc3JjL2NvcmUvcGF0aHMuanMiLCAiLi4vc3JjL2NvcmUvY2F0YWxvZy1zbmFwc2hvdC5qc29uIiwgIi4uL3NyYy9jb3JlL2NhdGFsb2cuanMiLCAiLi4vc3JjL2NvcmUvY29kZXgtbW9kZWxzLmpzIiwgIi4uL3NyYy9jb3JlL29wZW5haS1hdXRoLmpzIiwgIi4uL3NyYy9jb3JlL2NvbmZpZy5qcyIsICIuLi9zcmMvY29yZS9jb250ZXh0LmpzIiwgIi4uL3NyYy9jb3JlL3NraWxscy5qcyIsICIuLi9zcmMvY29yZS9jb21tYW5kcy5qcyIsICIuLi9zcmMvY29yZS9tY3AuanMiLCAiLi4vc3JjL2NvcmUvbWVtb3J5LmpzIiwgIi4uL3NyYy9jb3JlL2Jvb3QuanMiLCAiLi4vc3JjL2NvcmUvc2hlbGxzLmpzIiwgIi4uL3NyYy9jb3JlL2V2ZW50cy5qcyIsICIuLi9zcmMvY29yZS9zZXNzaW9uLmpzIiwgIi4uL3NyYy9jb3JlL2NvbXBhY3Rpb24uanMiLCAiLi4vc3JjL2NvcmUvZGVyaXZlLmpzIiwgIi4uL3NyYy9jb3JlL2FnZW50LmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL3JlY29yZGVyLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL3JlYWQuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZGlmZi5qcyIsICIuLi9zcmMvY29yZS90b29scy93cml0ZS5qcyIsICIuLi9zcmMvY29yZS90b29scy9lZGl0LmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2Jhc2guanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZ2xvYi5qcyIsICIuLi9zcmMvY29yZS90b29scy9ncmVwLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2luZGV4LmpzIiwgIi4uL3NyYy9jb3JlL3N5c3RlbS1wcm9tcHQuanMiLCAiLi4vc3JjL3VpL2Z1enp5LmpzIiwgIi4uL3NyYy91aS9hdHRhY2htZW50cy5qcyIsICIuLi9zcmMvaGVhZGxlc3MuanMiLCAiLi4vc3JjL21haW4uanN4IiwgIi4uL3NyYy9jbGktYXJncy5qcyIsICIuLi9zcmMvY29yZS93YWtldXBzLmpzIiwgIi4uL3NyYy91aS9hcHAuanN4IiwgIi4uL3NyYy9jb3JlL2hpc3RvcnkuanMiLCAiLi4vc3JjL2NvcmUvdXNlci10b29scy5qcyIsICIuLi9zcmMvY29yZS9yZXdpbmQuanMiLCAiLi4vc3JjL2NvcmUvZXhwb3J0LmpzIiwgIi4uL3NyYy91aS9jb21wbGV0aW9uLmpzIiwgIi4uL3NyYy91aS9maWxlcy5qcyIsICIuLi9zcmMvdWkvaGlnaGxpZ2h0LmpzIiwgIi4uL3NyYy91aS90cmFuc2NyaXB0LmpzeCIsICIuLi9zcmMvdWkvdGhlbWUuanMiLCAiLi4vc3JjL3VpL2hlbHAuanN4IiwgIi4uL3NyYy91aS9wYW5lbHMuanN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBzZXRLZXlzIH0gZnJvbSAnQHByc20vYWknXG5cbmNvbnN0IFBST1ZJREVSUyA9IFtcbiAgeyBpZDogJ2dvb2dsZScsIGxhYmVsOiAnR2VtaW5pJywgZW52OiBbJ0dFTUlOSV9BUElfS0VZJywgJ0dPT0dMRV9BSV9BUElfS0VZJ10gfSxcbiAgeyBpZDogJ2FudGhyb3BpYycsIGxhYmVsOiAnQ2xhdWRlJywgZW52OiBbJ0FOVEhST1BJQ19BUElfS0VZJ10gfSxcbiAgeyBpZDogJ29wZW5haScsIGxhYmVsOiAnT3BlbkFJJywgZW52OiBbJ09QRU5BSV9BUElfS0VZJ10gfSxcbiAgeyBpZDogJ3hhaScsIGxhYmVsOiAnR3JvaycsIGVudjogWydYQUlfQVBJX0tFWSddIH0sXG5dXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNjb3ZlcktleXMoZW52ID0gcHJvY2Vzcy5lbnYpIHtcbiAgY29uc3Qga2V5cyA9IHt9XG4gIGZvciAoY29uc3QgcCBvZiBQUk9WSURFUlMpIHtcbiAgICBjb25zdCBuYW1lID0gcC5lbnYuZmluZCgobikgPT4gZW52W25dKVxuICAgIGlmIChuYW1lKSBrZXlzW3AuaWRdID0gZW52W25hbWVdXG4gIH1cbiAgcmV0dXJuIGtleXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5S2V5cyhrZXlzKSB7XG4gIHNldEtleXMoa2V5cylcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGtleXMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrZXlIaW50KHByb3ZpZGVySWQpIHtcbiAgcmV0dXJuIFBST1ZJREVSUy5maW5kKChwKSA9PiBwLmlkID09PSBwcm92aWRlcklkKT8uZW52WzBdIHx8IGAke3Byb3ZpZGVySWQudG9VcHBlckNhc2UoKX1fQVBJX0tFWWBcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gZmluZE1vZGVsKG1vZGVscywgbmFtZSkge1xuICByZXR1cm4gbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSkgfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdE1vZGVsKG1vZGVscykge1xuICByZXR1cm4gbW9kZWxzLmZpbmQoKG0pID0+IG0uYXZhaWxhYmxlICE9PSBmYWxzZSkgfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXN0aW1hdGVDb3N0KG1vZGVsLCB1c2FnZSkge1xuICBpZiAoIW1vZGVsPy5wcmljZSB8fCAhdXNhZ2UpIHJldHVybiAwXG4gIGNvbnN0IGluQ29zdCA9ICh1c2FnZS5wcm9tcHRUb2tlbnMgfHwgMCkgKiBtb2RlbC5wcmljZS5pblxuICBjb25zdCBvdXRDb3N0ID0gKHVzYWdlLmNvbXBsZXRpb25Ub2tlbnMgfHwgMCkgKiBtb2RlbC5wcmljZS5vdXRcbiAgcmV0dXJuIChpbkNvc3QgKyBvdXRDb3N0KSAvIDFlNlxufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNvSG9tZSgpIHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52LlBJQ09fSE9NRSB8fCBqb2luKGhvbWVkaXIoKSwgJy5waWNvJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RLZXkocm9vdCkge1xuICByZXR1cm4gcmVzb2x2ZShyb290KS5yZXBsYWNlKC9bL1xcXFw6XS9nLCAnLScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJvamVjdFJvb3QoY3dkKSB7XG4gIGxldCBkaXIgPSByZXNvbHZlKGN3ZClcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChleGlzdHNTeW5jKGpvaW4oZGlyLCAnLmdpdCcpKSkgcmV0dXJuIGRpclxuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKVxuICAgIGlmIChwYXJlbnQgPT09IGRpciB8fCBkaXIgPT09IGhvbWUpIHJldHVybiByZXNvbHZlKGN3ZClcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdERpcihyb290KSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdwcm9qZWN0cycsIHByb2plY3RLZXkocm9vdCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uc0Rpcihyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdzZXNzaW9ucycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0SGlzdG9yeUZpbGUocm9vdCkge1xuICByZXR1cm4gam9pbihwcm9qZWN0RGlyKHJvb3QpLCAnaGlzdG9yeS5qc29ubCcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0TWNwRmlsZShyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdtY3AuanNvbicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxNY3BGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnbWNwLmpzb24nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsU2tpbGxzRGlyKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnc2tpbGxzJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RTa2lsbHNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihyb290LCAnLnBpY28nLCAnc2tpbGxzJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbEFnZW50c0ZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdBR0VOVFMubWQnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRGlyKGRpcikge1xuICBta2RpclN5bmMoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICByZXR1cm4gZGlyXG59XG4iLCAie1wiZ29vZ2xlXCI6e1wibW9kZWxzXCI6e1wiZ2VtaW5pLTMuMS1mbGFzaC1saXRlXCI6e1wiaWRcIjpcImdlbWluaS0zLjEtZmxhc2gtbGl0ZVwiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBGbGFzaCBMaXRlXCIsXCJkZXNjcmlwdGlvblwiOlwiTG93LWxhdGVuY3kgR2VtaW5pIG1vZGVsIGZvciBoaWdoLXZvbHVtZSBtdWx0aW1vZGFsIGFuZCBhZ2VudCB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoxLjUsXCJjYWNoZV9yZWFkXCI6MC4wMjUsXCJpbnB1dF9hdWRpb1wiOjAuNX19LFwiZ2VtaW5pLTIuNS1mbGFzaC1wcmV2aWV3LXR0c1wiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoLXByZXZpZXctdHRzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IEZsYXNoIFByZXZpZXcgVFRTXCIsXCJkZXNjcmlwdGlvblwiOlwiU3BlZWNoIGdlbmVyYXRpb24gbW9kZWwgZm9yIGNvbnRyb2xsYWJsZSB2b2ljZSwgbmFycmF0aW9uLCBhbmQgYXVkaW8gZGVsaXZlcnlcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDUtMDFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcImF1ZGlvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjEwfX0sXCJnZW1pbmktMi41LXByb1wiOntcImlkXCI6XCJnZW1pbmktMi41LXByb1wiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJHb29nbGUncyBwcm92ZW4gcmVhc29uaW5nIG1vZGVsIGZvciBjb2RpbmcsIG1hdGgsIGFuZCBtdWx0aW1vZGFsIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEyOCxcIm1heFwiOjMyNzY4fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1fX19LFwiZ2VtaW5pLTIuNS1mbGFzaFwiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IEZsYXNoXCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBHZW1pbmkgd29ya2hvcnNlIGZvciBtdWx0aW1vZGFsIGFwcHMgd2hlcmUgbGF0ZW5jeSBhbmQgcHJpY2UgbWF0dGVyXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjAsXCJtYXhcIjoyNDU3Nn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA2LTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDYtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4zLFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMDMsXCJpbnB1dF9hdWRpb1wiOjF9fSxcImdlbWluaS0zLjUtZmxhc2hcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuNS1mbGFzaFwiLFwibmFtZVwiOlwiR2VtaW5pIDMuNSBGbGFzaFwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR2VtaW5pIG1vZGVsIGJhbGFuY2luZyBtdWx0aW1vZGFsIHJlYXNvbmluZywgdG9vbCB1c2UsIGFuZCBjb3N0XCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA1LTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDUtMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MS41LFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjE1LFwiaW5wdXRfYXVkaW9cIjoxLjV9fSxcImdlbW1hLTQtMzFiLWl0XCI6e1wiaWRcIjpcImdlbW1hLTQtMzFiLWl0XCIsXCJuYW1lXCI6XCJHZW1tYSA0IDMxQiBJVFwiLFwiZGVzY3JpcHRpb25cIjpcIkxhcmdlc3QgR2VtbWEgNCBpbnN0cnVjdGlvbiBtb2RlbCBmb3Igb3Blbiwgc2VsZi1ob3N0ZWQgY2hhdCBhbmQgcmVhc29uaW5nXCIsXCJmYW1pbHlcIjpcImdlbW1hXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0wMlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTAyXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6dHJ1ZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjI2MjE0NCxcIm91dHB1dFwiOjMyNzY4fX0sXCJnZW1pbmktMi4wLWZsYXNoXCI6e1wiaWRcIjpcImdlbWluaS0yLjAtZmxhc2hcIixcIm5hbWVcIjpcIkdlbWluaSAyLjAgRmxhc2hcIixcImRlc2NyaXB0aW9uXCI6XCJFYXJsaWVyIEdlbWluaSBGbGFzaCB3b3JraG9yc2UgZm9yIHJlc3BvbnNpdmUgbXVsdGltb2RhbCBhcHBzIGFuZCB0b29sIHVzZVwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo4MTkyfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MC4xLFwib3V0cHV0XCI6MC40LFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJnZW1pbmktZW1iZWRkaW5nLTAwMVwiOntcImlkXCI6XCJnZW1pbmktZW1iZWRkaW5nLTAwMVwiLFwibmFtZVwiOlwiR2VtaW5pIEVtYmVkZGluZyAwMDFcIixcImRlc2NyaXB0aW9uXCI6XCJFbWJlZGRpbmcgbW9kZWwgZm9yIHNlbWFudGljIHNlYXJjaCwgcmV0cmlldmFsLCBjbHVzdGVyaW5nLCBhbmQgcmFua2luZyBwaXBlbGluZXNcIixcImZhbWlseVwiOlwiZ2VtaW5pXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA1LTIwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDUtMjBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjA0OCxcIm91dHB1dFwiOjF9LFwiY29zdFwiOntcImlucHV0XCI6MC4xNSxcIm91dHB1dFwiOjB9fSxcImdlbWluaS0zLjEtcHJvLXByZXZpZXctY3VzdG9tdG9vbHNcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1wcm8tcHJldmlldy1jdXN0b210b29sc1wiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBQcm8gUHJldmlldyBDdXN0b20gVG9vbHNcIixcImRlc2NyaXB0aW9uXCI6XCJBZHZhbmNlZCBHZW1pbmkgbW9kZWwgZm9yIGNvbXBsZXggcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBtdWx0aW1vZGFsIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAyLTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ2VtaW5pLWZsYXNoLWxpdGUtbGF0ZXN0XCI6e1wiaWRcIjpcImdlbWluaS1mbGFzaC1saXRlLWxhdGVzdFwiLFwibmFtZVwiOlwiR2VtaW5pIEZsYXNoLUxpdGUgTGF0ZXN0XCIsXCJkZXNjcmlwdGlvblwiOlwiTG93LWxhdGVuY3kgR2VtaW5pIG1vZGVsIGZvciBoaWdoLXZvbHVtZSBtdWx0aW1vZGFsIGFuZCBhZ2VudCB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjo1MTIsXCJtYXhcIjoyNDU3Nn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4xLFwib3V0cHV0XCI6MC40LFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJnZW1pbmktMy1wcm8taW1hZ2UtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy1wcm8taW1hZ2UtcHJldmlld1wiLFwibmFtZVwiOlwiTmFubyBCYW5hbmEgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiTmFubyBCYW5hbmEgUHJvIGZvciBoaWdoZXItZmlkZWxpdHkgaW1hZ2UgZ2VuZXJhdGlvbiBhbmQgZGVzaWduLWhlYXZ5IGVkaXRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTIwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMjBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMzEwNzIsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6MTIwfX0sXCJnZW1pbmktMi41LWZsYXNoLWltYWdlXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2gtaW1hZ2VcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hXCIsXCJkZXNjcmlwdGlvblwiOlwiTmFubyBCYW5hbmEgaW1hZ2UgbW9kZWwgZm9yIGZhc3QgZ2VuZXJhdGlvbiwgZWRpdHMsIGFuZCBjaGFyYWN0ZXItY29uc2lzdGVudCBhc3NldHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MzI3NjgsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjMsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjA3NX19LFwiZ2VtaW5pLTIuNS1mbGFzaC1saXRlXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2gtbGl0ZVwiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBGbGFzaC1MaXRlXCIsXCJkZXNjcmlwdGlvblwiOlwiTGVhbiBHZW1pbmkgMi41IGxhbmUgZm9yIGNoZWFwIG11bHRpbW9kYWwgdHJhZmZpYyBhbmQgcXVpY2sgYWdlbnRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaC1saXRlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6NTEyLFwibWF4XCI6MjQ1NzZ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA2LTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAxLFwiaW5wdXRfYXVkaW9cIjowLjN9fSxcImdlbWluaS1vbW5pLWZsYXNoLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLW9tbmktZmxhc2gtcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIE9tbmkgRmxhc2ggUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIlZpZGVvIGdlbmVyYXRpb24gYW5kIGVkaXRpbmcgbW9kZWwgZm9yIGZhc3QsIGNvbnZlcnNhdGlvbmFsIHRleHQtIGFuZCBpbWFnZS10by12aWRlbyB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ2VtaW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDYtMzBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNi0zMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCJdLFwib3V0cHV0XCI6W1widmlkZW9cIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMzEwNzIsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjUsXCJvdXRwdXRcIjoxNy41fX0sXCJnZW1pbmktMy4xLWZsYXNoLWltYWdlLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1mbGFzaC1pbWFnZS1wcmV2aWV3XCIsXCJuYW1lXCI6XCJOYW5vIEJhbmFuYSAyXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjY1NTM2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC41LFwib3V0cHV0XCI6NjB9fSxcImdlbWluaS0zLjEtcHJvLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1wcm8tcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBQcm8gUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIlJlYXNvbmluZy1maXJzdCBHZW1pbmkgcHJldmlldyBmb3IgYWdlbnRpYyBjb2RpbmcgYW5kIGNvbXBsZXggcHJvYmxlbSBzb2x2aW5nXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAyLTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ2VtbWEtNC0yNmItYTRiLWl0XCI6e1wiaWRcIjpcImdlbW1hLTQtMjZiLWE0Yi1pdFwiLFwibmFtZVwiOlwiR2VtbWEgNCAyNkIgQTRCIElUXCIsXCJkZXNjcmlwdGlvblwiOlwiT3BlbiBHZW1tYSBpbnN0cnVjdGlvbiBtb2RlbCBmb3IgZWZmaWNpZW50IGNoYXQgYW5kIHNlbGYtaG9zdGVkIGRlcGxveW1lbnRzXCIsXCJmYW1pbHlcIjpcImdlbW1hXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0wMlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTAyXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6dHJ1ZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjI2MjE0NCxcIm91dHB1dFwiOjMyNzY4fX0sXCJnZW1pbmktMy1wcm8tcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy1wcm8tcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMgUHJvIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJQcmV2aWV3IEdlbWluaSBmbGFnc2hpcCBmb3IgY29tcGxleCByZWFzb25pbmcsIGNvZGluZywgYW5kIHJpY2ggbXVsdGltb2RhbCBwcm9tcHRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMThcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJzdGF0dXNcIjpcImRlcHJlY2F0ZWRcIixcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ2VtaW5pLTMtZmxhc2gtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy1mbGFzaC1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMyBGbGFzaCBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiTmV3IEdlbWluaSBmbGFzaCBsYW5lIGJyaW5naW5nIGZyb250aWVyLXN0eWxlIG11bHRpbW9kYWwgcmVhc29uaW5nIHRvIGNoZWFwZXIgcnVuc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjMsXCJjYWNoZV9yZWFkXCI6MC4wNSxcImlucHV0X2F1ZGlvXCI6MX19LFwiZ2VtaW5pLTIuNS1wcm8tcHJldmlldy10dHNcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuNS1wcm8tcHJldmlldy10dHNcIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgUHJvIFByZXZpZXcgVFRTXCIsXCJkZXNjcmlwdGlvblwiOlwiU3BlZWNoIGdlbmVyYXRpb24gbW9kZWwgZm9yIGNvbnRyb2xsYWJsZSB2b2ljZSwgbmFycmF0aW9uLCBhbmQgYXVkaW8gZGVsaXZlcnlcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDUtMDFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcImF1ZGlvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjoyMH19LFwiZ2VtaW5pLWZsYXNoLWxhdGVzdFwiOntcImlkXCI6XCJnZW1pbmktZmxhc2gtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHZW1pbmkgRmxhc2ggTGF0ZXN0XCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBHZW1pbmkgbW9kZWwgYmFsYW5jaW5nIG11bHRpbW9kYWwgcmVhc29uaW5nLCB0b29sIHVzZSwgYW5kIGNvc3RcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MCxcIm1heFwiOjI0NTc2fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjMsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4wNzUsXCJpbnB1dF9hdWRpb1wiOjF9fSxcImdlbWluaS0zLjEtZmxhc2gtbGl0ZS1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLjEtZmxhc2gtbGl0ZS1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIEZsYXNoIExpdGUgUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIkxlZ2FjeSBtb2RlbCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGludGVncmF0aW9uc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTAzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjowLjI1LFwib3V0cHV0XCI6MS41LFwiY2FjaGVfcmVhZFwiOjAuMDI1LFwiaW5wdXRfYXVkaW9cIjowLjV9fSxcImdlbWluaS0yLjAtZmxhc2gtbGl0ZVwiOntcImlkXCI6XCJnZW1pbmktMi4wLWZsYXNoLWxpdGVcIixcIm5hbWVcIjpcIkdlbWluaSAyLjAgRmxhc2gtTGl0ZVwiLFwiZGVzY3JpcHRpb25cIjpcIkxlZ2FjeSBtb2RlbCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGludGVncmF0aW9uc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjgxOTJ9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjowLjA3NSxcIm91dHB1dFwiOjAuM319fX0sXCJhbnRocm9waWNcIjp7XCJtb2RlbHNcIjp7XCJjbGF1ZGUtb3B1cy00LTVcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjUgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJGbGFnc2hpcCBDbGF1ZGUgbW9kZWwgZm9yIGRlZXAgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0yNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxXCI6e1wiaWRcIjpcImNsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDFcIixcIm5hbWVcIjpcIkNsYXVkZSBIYWlrdSA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IENsYXVkZSBtb2RlbCBmb3IgcmVzcG9uc2l2ZSBhc3Npc3RhbmNlLCBjbGFzc2lmaWNhdGlvbiwgYW5kIGxpZ2h0d2VpZ2h0IGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtaGFpa3VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDItMjhcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMC0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEwLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuMSxcImNhY2hlX3dyaXRlXCI6MS4yNX19LFwiY2xhdWRlLW9wdXMtNC0xLTIwMjUwODA1XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtMS0yMDI1MDgwNVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC4xXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MzIwMDB9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjc1LFwiY2FjaGVfcmVhZFwiOjEuNSxcImNhY2hlX3dyaXRlXCI6MTguNzV9fSxcImNsYXVkZS1zb25uZXQtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIENsYXVkZSBtb2RlbCBmb3IgY29kaW5nLCBhbmFseXNpcywgYWdlbnQgd29ya2Zsb3dzLCBhbmQgY29zdCBjb250cm9sXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1zb25uZXRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDctMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozLFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4zLFwiY2FjaGVfd3JpdGVcIjozLjc1fX0sXCJjbGF1ZGUtb3B1cy00LTdcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC03XCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjdcIixcImRlc2NyaXB0aW9uXCI6XCJTdHJvbmdlciBPcHVzIHRpZXIgZm9yIGFkdmFuY2VkIHNvZnR3YXJlIHdvcmsgYW5kIGhpZ2gtc3Rha2VzIHJlYXNvbmluZ1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDEtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0xNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjoxNTAsXCJjYWNoZV9yZWFkXCI6MyxcImNhY2hlX3dyaXRlXCI6MzcuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzcGVlZFwiOlwiZmFzdFwifSxcImhlYWRlcnNcIjp7XCJhbnRocm9waWMtYmV0YVwiOlwiZmFzdC1tb2RlLTIwMjYtMDItMDFcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLXNvbm5ldC01XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA1XCIsXCJkZXNjcmlwdGlvblwiOlwiRXZlcnlkYXkgQ2xhdWRlIGFnZW50IG1vZGVsIGZvciBjb2RpbmcsIHBsYW5uaW5nLCBicm93c2luZywgYW5kIGdlbmVyYWwgd29ya1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDEtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNi0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA2LTMwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fX0sXCJjbGF1ZGUtb3B1cy00LTUtMjAyNTExMDFcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC01LTIwMjUxMTAxXCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJGbGFnc2hpcCBDbGF1ZGUgbW9kZWwgZm9yIGRlZXAgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtb3B1cy00LThcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC04XCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjhcIixcImRlc2NyaXB0aW9uXCI6XCJUb3AgQ2xhdWRlIE9wdXMgdGllciBmb3IgdGhlIGhhcmRlc3QgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA1LTI4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDUtMjhcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjUwLFwiY2FjaGVfcmVhZFwiOjEsXCJjYWNoZV93cml0ZVwiOjEyLjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic3BlZWRcIjpcImZhc3RcIn0sXCJoZWFkZXJzXCI6e1wiYW50aHJvcGljLWJldGFcIjpcImZhc3QtbW9kZS0yMDI2LTAyLTAxXCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1vcHVzLTQtMVwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTFcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuMSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkZsYWdzaGlwIENsYXVkZSBtb2RlbCBmb3IgZGVlcCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxvbmctaG9yaXpvbiBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDMtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjMyMDAwfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MTUsXCJvdXRwdXRcIjo3NSxcImNhY2hlX3JlYWRcIjoxLjUsXCJjYWNoZV93cml0ZVwiOjE4Ljc1fX0sXCJjbGF1ZGUtZmFibGUtNVwiOntcImlkXCI6XCJjbGF1ZGUtZmFibGUtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIEZhYmxlIDVcIixcImRlc2NyaXB0aW9uXCI6XCJDbGF1ZGUgbW9kZWwgZm9yIGNyZWF0aXZlIHdyaXRpbmcsIGFuYWx5c2lzLCBhbmQgY29udHJvbGxlZCBhZ2VudCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiY2xhdWRlLWZhYmxlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNi0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA2LTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo1MCxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fX0sXCJjbGF1ZGUtaGFpa3UtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1oYWlrdS00LTVcIixcIm5hbWVcIjpcIkNsYXVkZSBIYWlrdSA0LjUgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IENsYXVkZSBsYW5lIGZvciBsaWdodHdlaWdodCBhZ2VudHMsIG9mZmljZSB0YXNrcywgYW5kIHJlc3BvbnNpdmUgY2hhdFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtaGFpa3VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDItMjhcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMC0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEwLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuMSxcImNhY2hlX3dyaXRlXCI6MS4yNX19LFwiY2xhdWRlLW9wdXMtNC02XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtNlwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC42XCIsXCJkZXNjcmlwdGlvblwiOlwiSGlnaC1lbmQgQ2xhdWRlIGZvciBkaWZmaWN1bHQgY29kaW5nLCBwbGFubmluZywgYW5kIHNsb3dlciBleHBlcnQgcmVhc29uaW5nXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJtYXhcIl19LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDUtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0wNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjoxNTAsXCJjYWNoZV9yZWFkXCI6MyxcImNhY2hlX3dyaXRlXCI6MzcuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzcGVlZFwiOlwiZmFzdFwifSxcImhlYWRlcnNcIjp7XCJhbnRocm9waWMtYmV0YVwiOlwiZmFzdC1tb2RlLTIwMjYtMDItMDFcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLXNvbm5ldC00LTUtMjAyNTA5MjlcIjp7XCJpZFwiOlwiY2xhdWRlLXNvbm5ldC00LTUtMjAyNTA5MjlcIixcIm5hbWVcIjpcIkNsYXVkZSBTb25uZXQgNC41XCIsXCJkZXNjcmlwdGlvblwiOlwiQmFsYW5jZWQgQ2xhdWRlIG1vZGVsIGZvciBjb2RpbmcsIGFuYWx5c2lzLCBhZ2VudCB3b3JrZmxvd3MsIGFuZCBjb3N0IGNvbnRyb2xcIixcImZhbWlseVwiOlwiY2xhdWRlLXNvbm5ldFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjMsXCJjYWNoZV93cml0ZVwiOjMuNzV9fSxcImNsYXVkZS1zb25uZXQtNC02XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC02XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNlwiLFwiZGVzY3JpcHRpb25cIjpcIkNsYXVkZSB3b3JraG9yc2UgZm9yIGNvZGluZyBhZ2VudHMsIGNhcmVmdWwgYW5hbHlzaXMsIGFuZCBwcm9kdWN0aW9uIGNvc3QgY29udHJvbFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJtYXhcIl19LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MyxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMyxcImNhY2hlX3dyaXRlXCI6My43NX19fX0sXCJvcGVuYWlcIjp7XCJtb2RlbHNcIjp7XCJvM1wiOntcImlkXCI6XCJvM1wiLFwibmFtZVwiOlwibzNcIixcImRlc2NyaXB0aW9uXCI6XCJEZWxpYmVyYXRlIG8tc2VyaWVzIHJlYXNvbmVyIGZvciBoYXJkIG1hdGgsIGNvZGluZywgYW5kIG11bHRpLXN0ZXAgYW5hbHlzaXNcIixcImZhbWlseVwiOlwib1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OCxcImNhY2hlX3JlYWRcIjowLjV9fSxcInRleHQtZW1iZWRkaW5nLTMtbGFyZ2VcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctMy1sYXJnZVwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctMy1sYXJnZVwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wMS0yNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTAxLTI1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTEsXCJvdXRwdXRcIjozMDcyfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMTMsXCJvdXRwdXRcIjowfX0sXCJncHQtNS4yLXByb1wiOntcImlkXCI6XCJncHQtNS4yLXByb1wiLFwibmFtZVwiOlwiR1BULTUuMiBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXItYWNjdXJhY3kgR1BULTUuMiB2YXJpYW50IGZvciB0b3VnaGVyIHJlYXNvbmluZyBhbmQgcmV2aWV3IHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIxLFwib3V0cHV0XCI6MTY4fX0sXCJncHQtNS42XCI6e1wiaWRcIjpcImdwdC01LjZcIixcIm5hbWVcIjpcIkdQVC01LjZcIixcImRlc2NyaXB0aW9uXCI6XCJGcm9udGllciBHUFQtNS42IG1vZGVsIGZvciBjb21wbGV4IHByb2Zlc3Npb25hbCB3b3JrLCBjb2RpbmcsIGFuZCBhZ2VudGljIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo2MCxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fSxcInByb1wiOntcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInJlYXNvbmluZ1wiOntcIm1vZGVcIjpcInByb1wifX19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fX19LFwiZ3B0LTVcIjp7XCJpZFwiOlwiZ3B0LTVcIixcIm5hbWVcIjpcIkdQVC01XCIsXCJkZXNjcmlwdGlvblwiOlwiT3JpZ2luYWwgR1BULTUgd29ya2hvcnNlIGZvciByZWFzb25pbmcsIGNvZGluZywgd3JpdGluZywgYW5kIHRvb2wgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC0zLjUtdHVyYm9cIjp7XCJpZFwiOlwiZ3B0LTMuNS10dXJib1wiLFwibmFtZVwiOlwiR1BULTMuNS10dXJib1wiLFwiZGVzY3JpcHRpb25cIjpcIkNvbXBhY3QgR1BUIG1vZGVsIGZvciBsb3ctbGF0ZW5jeSBhc3Npc3RhbmNlIGFuZCBoaWdoLXZvbHVtZSB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMS0wOS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIzLTAzLTAxXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjMtMTEtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTYzODUsXCJvdXRwdXRcIjo0MDk2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjEuNSxcImNhY2hlX3JlYWRcIjowfX0sXCJncHQtNS1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUtcHJvXCIsXCJuYW1lXCI6XCJHUFQtNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXItYWNjdXJhY3kgR1BULTUgdGllciBmb3IgdG91Z2ggYW5hbHlzaXMsIGNvZGluZyByZXZpZXdzLCBhbmQgcGxhbm5pbmdcIixcImZhbWlseVwiOlwiZ3B0LXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEwLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTAtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MjcyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjE1LFwib3V0cHV0XCI6MTIwfX0sXCJncHQtNG9cIjp7XCJpZFwiOlwiZ3B0LTRvXCIsXCJuYW1lXCI6XCJHUFQtNG9cIixcImRlc2NyaXB0aW9uXCI6XCJPbW5pLWVyYSBHUFQgZm9yIG11bHRpbW9kYWwgY2hhdCwgcHJhY3RpY2FsIGNvZGluZywgYW5kIGdlbmVyYWwgYXNzaXN0YW50c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDUtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wOC0wNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtNFwiOntcImlkXCI6XCJncHQtNFwiLFwibmFtZVwiOlwiR1BULTRcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTExXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjMtMTEtMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNC0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkyLFwib3V0cHV0XCI6ODE5Mn0sXCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjYwfX0sXCJvNC1taW5pXCI6e1wiaWRcIjpcIm80LW1pbmlcIixcIm5hbWVcIjpcIm80LW1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IG8tc2VyaWVzIG1vZGVsIGZvciBjb21wYWN0IHJlYXNvbmluZywgY29kaW5nLCBhbmQgdG9vbCB1c2VcIixcImZhbWlseVwiOlwiby1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjEsXCJvdXRwdXRcIjo0LjQsXCJjYWNoZV9yZWFkXCI6MC4yNzV9fSxcIm8zLXByb1wiOntcImlkXCI6XCJvMy1wcm9cIixcIm5hbWVcIjpcIm8zLXByb1wiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2gtZWZmb3J0IG8zIHRpZXIgZm9yIGRpZmZpY3VsdCB0ZWNobmljYWwgcmVhc29uaW5nIGFuZCBjYXJlZnVsIGFuc3dlcnNcIixcImZhbWlseVwiOlwiby1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIwLFwib3V0cHV0XCI6ODB9fSxcImNoYXRncHQtaW1hZ2UtbGF0ZXN0XCI6e1wiaWRcIjpcImNoYXRncHQtaW1hZ2UtbGF0ZXN0XCIsXCJuYW1lXCI6XCJjaGF0Z3B0LWltYWdlLWxhdGVzdFwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfX0sXCJncHQtNG8tMjAyNC0wNS0xM1wiOntcImlkXCI6XCJncHQtNG8tMjAyNC0wNS0xM1wiLFwibmFtZVwiOlwiR1BULTRvICgyMDI0LTA1LTEzKVwiLFwiZGVzY3JpcHRpb25cIjpcIkdQVCBtb2RlbCBmb3IgZ2VuZXJhbCByZWFzb25pbmcsIHdyaXRpbmcsIGNvZGluZywgYW5kIHRvb2wtYXNzaXN0ZWQgdGFza3NcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA1LTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDUtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjQwOTZ9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjE1fX0sXCJncHQtNS40LW5hbm9cIjp7XCJpZFwiOlwiZ3B0LTUuNC1uYW5vXCIsXCJuYW1lXCI6XCJHUFQtNS40IG5hbm9cIixcImRlc2NyaXB0aW9uXCI6XCJDaGVhcGVzdCBHUFQtNS40IGxhbmUgZm9yIHNpbXBsZSByb3V0aW5nLCBleHRyYWN0aW9uLCBhbmQgYnVsayBhdXRvbWF0aW9uXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjIsXCJvdXRwdXRcIjoxLjI1LFwiY2FjaGVfcmVhZFwiOjAuMDJ9fSxcImdwdC01LWNoYXQtbGF0ZXN0XCI6e1wiaWRcIjpcImdwdC01LWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNSBDaGF0IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hhdC10dW5lZCBHUFQgbW9kZWwgZm9yIGNvbnZlcnNhdGlvbmFsIGFzc2lzdGFuY2UsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMS1jb2RleFwiOntcImlkXCI6XCJncHQtNS4xLWNvZGV4XCIsXCJuYW1lXCI6XCJHUFQtNS4xIENvZGV4XCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kZXggR1BUIGZvciByZXBvc2l0b3J5IGVkaXRzLCBjb2RlIHJldmlldywgYW5kIHByYWN0aWNhbCBzb2Z0d2FyZSBhZ2VudHNcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMy1jb2RleC1zcGFya1wiOntcImlkXCI6XCJncHQtNS4zLWNvZGV4LXNwYXJrXCIsXCJuYW1lXCI6XCJHUFQtNS4zIENvZGV4IFNwYXJrXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4LXNwYXJrXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAyLTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcImlucHV0XCI6MTAwMDAwLFwib3V0cHV0XCI6MzIwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtNS4xLWNvZGV4LW1heFwiOntcImlkXCI6XCJncHQtNS4xLWNvZGV4LW1heFwiLFwibmFtZVwiOlwiR1BULTUuMSBDb2RleCBNYXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2Rpbmctb3B0aW1pemVkIEdQVCBtb2RlbCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgcmV2aWV3cywgYW5kIGFnZW50aWMgc29mdHdhcmUgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMy1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS4zLWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNS4zIENoYXQgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJDaGF0LXR1bmVkIEdQVCBtb2RlbCBmb3IgY29udmVyc2F0aW9uYWwgYXNzaXN0YW5jZSwgd3JpdGluZywgYW5kIHRvb2wgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC00by0yMDI0LTA4LTA2XCI6e1wiaWRcIjpcImdwdC00by0yMDI0LTA4LTA2XCIsXCJuYW1lXCI6XCJHUFQtNG8gKDIwMjQtMDgtMDYpXCIsXCJkZXNjcmlwdGlvblwiOlwiR1BUIG1vZGVsIGZvciBnZW5lcmFsIHJlYXNvbmluZywgd3JpdGluZywgY29kaW5nLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDgtMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wOC0wNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MS4yNX19LFwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiOntcImlkXCI6XCJ0ZXh0LWVtYmVkZGluZy1hZGEtMDAyXCIsXCJuYW1lXCI6XCJ0ZXh0LWVtYmVkZGluZy1hZGEtMDAyXCIsXCJkZXNjcmlwdGlvblwiOlwiRW1iZWRkaW5nIG1vZGVsIGZvciBzZW1hbnRpYyBzZWFyY2gsIHJldHJpZXZhbCwgY2x1c3RlcmluZywgYW5kIHJhbmtpbmcgcGlwZWxpbmVzXCIsXCJmYW1pbHlcIjpcInRleHQtZW1iZWRkaW5nXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyMi0xMlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIyLTEyLTE1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjItMTItMTVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjE1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4xLFwib3V0cHV0XCI6MH19LFwibzMtbWluaVwiOntcImlkXCI6XCJvMy1taW5pXCIsXCJuYW1lXCI6XCJvMy1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiU21hbGxlciBvLXNlcmllcyByZWFzb25lciBmb3IgZWNvbm9taWNhbCBjb2RpbmcsIG1hdGgsIGFuZCBwbGFubmluZyB0YXNrc1wiLFwiZmFtaWx5XCI6XCJvLW1pbmlcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTEyLTIwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDEtMjlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMSxcIm91dHB1dFwiOjQuNCxcImNhY2hlX3JlYWRcIjowLjU1fX0sXCJncHQtNS4yXCI6e1wiaWRcIjpcImdwdC01LjJcIixcIm5hbWVcIjpcIkdQVC01LjJcIixcImRlc2NyaXB0aW9uXCI6XCJSZWxpYWJsZSBHUFQgZ2VuZXJhdGlvbiBmb3IgYnJvYWQgY29kaW5nLCB3cml0aW5nLCBhbmQgdG9vbC1hc3Npc3RlZCBwcm9kdWN0IHdvcmtcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC01LjMtY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUuMyBDb2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcInRleHQtZW1iZWRkaW5nLTMtc21hbGxcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctMy1zbWFsbFwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctMy1zbWFsbFwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wMS0yNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTAxLTI1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTEsXCJvdXRwdXRcIjoxNTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMDIsXCJvdXRwdXRcIjowfX0sXCJncHQtNS42LWx1bmFcIjp7XCJpZFwiOlwiZ3B0LTUuNi1sdW5hXCIsXCJuYW1lXCI6XCJHUFQtNS42IEx1bmFcIixcImRlc2NyaXB0aW9uXCI6XCJDb3N0LWVmZmljaWVudCBHUFQtNS42IG1vZGVsIGZvciBmYXN0LCBoaWdoLXZvbHVtZSB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ3B0LW5hbm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fSxcInByb1wiOntcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInJlYXNvbmluZ1wiOntcIm1vZGVcIjpcInByb1wifX19fX19LFwiY29zdFwiOntcImlucHV0XCI6MSxcIm91dHB1dFwiOjYsXCJjYWNoZV9yZWFkXCI6MC4xLFwiY2FjaGVfd3JpdGVcIjoxLjI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo5LFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fX19LFwiZ3B0LTUuMS1jb2RleC1taW5pXCI6e1wiaWRcIjpcImdwdC01LjEtY29kZXgtbWluaVwiLFwibmFtZVwiOlwiR1BULTUuMSBDb2RleCBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoyLFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJncHQtNS42LXRlcnJhXCI6e1wiaWRcIjpcImdwdC01LjYtdGVycmFcIixcIm5hbWVcIjpcIkdQVC01LjYgVGVycmFcIixcImRlc2NyaXB0aW9uXCI6XCJCYWxhbmNlZCBHUFQtNS42IG1vZGVsIGZvciBjYXBhYmxlLCBjb3N0LWVmZmljaWVudCBldmVyeWRheSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19LFwicHJvXCI6e1wicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wicmVhc29uaW5nXCI6e1wibW9kZVwiOlwicHJvXCJ9fX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1LFwiY2FjaGVfd3JpdGVcIjozLjEyNSxcInRpZXJzXCI6W3tcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX19LFwiZ3B0LTUuMS1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS4xLWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNS4xIENoYXRcIixcImRlc2NyaXB0aW9uXCI6XCJDaGF0LXR1bmVkIEdQVC01LjEgZm9yIHBvbGlzaGVkIGFzc2lzdGFudHMsIHdyaXRpbmcsIGFuZCBwcm9kdWN0IGNvbnZlcnNhdGlvbnNcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjItY2hhdC1sYXRlc3RcIjp7XCJpZFwiOlwiZ3B0LTUuMi1jaGF0LWxhdGVzdFwiLFwibmFtZVwiOlwiR1BULTUuMiBDaGF0XCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hhdC10dW5lZCBHUFQgbW9kZWwgZm9yIGNvbnZlcnNhdGlvbmFsIGFzc2lzdGFuY2UsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNzUsXCJvdXRwdXRcIjoxNCxcImNhY2hlX3JlYWRcIjowLjE3NX19LFwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCI6e1wiaWRcIjpcIm80LW1pbmktZGVlcC1yZXNlYXJjaFwiLFwibmFtZVwiOlwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVzZWFyY2ggbW9kZWwgZm9yIGxvbmctaG9yaXpvbiBpbnZlc3RpZ2F0aW9uLCBzeW50aGVzaXMsIGFuZCBhbmFseXRpY2FsIHJlcG9ydHNcIixcImZhbWlseVwiOlwiby1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNi0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA2LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJncHQtaW1hZ2UtMS41XCI6e1wiaWRcIjpcImdwdC1pbWFnZS0xLjVcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0xLjVcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTI1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMjVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTQuMS1uYW5vXCI6e1wiaWRcIjpcImdwdC00LjEtbmFub1wiLFwibmFtZVwiOlwiR1BULTQuMSBuYW5vXCIsXCJkZXNjcmlwdGlvblwiOlwiVGlueSBHUFQtNC4xIG9wdGlvbiBmb3IgY2xhc3NpZmljYXRpb24sIHJvdXRpbmcsIGFuZCB2ZXJ5IGhpZ2gtdm9sdW1lIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDc1NzYsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMjV9fSxcImdwdC00by0yMDI0LTExLTIwXCI6e1wiaWRcIjpcImdwdC00by0yMDI0LTExLTIwXCIsXCJuYW1lXCI6XCJHUFQtNG8gKDIwMjQtMTEtMjApXCIsXCJkZXNjcmlwdGlvblwiOlwiR1BUIG1vZGVsIGZvciBnZW5lcmFsIHJlYXNvbmluZywgd3JpdGluZywgY29kaW5nLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTEtMjBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMS0yMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MS4yNX19LFwibzFcIjp7XCJpZFwiOlwibzFcIixcIm5hbWVcIjpcIm8xXCIsXCJkZXNjcmlwdGlvblwiOlwiTy1zZXJpZXMgcmVhc29uaW5nIG1vZGVsIGZvciBoYXJkIGFuYWx5c2lzLCBtYXRoLCBjb2RpbmcsIGFuZCBwbGFubmluZ1wiLFwiZmFtaWx5XCI6XCJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTEyLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMTItMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjE1LFwib3V0cHV0XCI6NjAsXCJjYWNoZV9yZWFkXCI6Ny41fX0sXCJvMS1wcm9cIjp7XCJpZFwiOlwibzEtcHJvXCIsXCJuYW1lXCI6XCJvMS1wcm9cIixcImRlc2NyaXB0aW9uXCI6XCJPLXNlcmllcyByZWFzb25pbmcgbW9kZWwgZm9yIGhhcmQgYW5hbHlzaXMsIG1hdGgsIGNvZGluZywgYW5kIHBsYW5uaW5nXCIsXCJmYW1pbHlcIjpcIm8tcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTAzLTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDMtMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxNTAsXCJvdXRwdXRcIjo2MDB9fSxcImdwdC01LjRcIjp7XCJpZFwiOlwiZ3B0LTUuNFwiLFwibmFtZVwiOlwiR1BULTUuNFwiLFwiZGVzY3JpcHRpb25cIjpcIkFnZW50LXJlYWR5IEdQVCBmb3IgY29kaW5nIGFuZCBjb21wdXRlci11c2Ugd29ya2Zsb3dzIGF0IGEgbG93ZXIgY29zdFwiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjV9fX0sXCJncHQtNS40LW1pbmlcIjp7XCJpZFwiOlwiZ3B0LTUuNC1taW5pXCIsXCJuYW1lXCI6XCJHUFQtNS40IG1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJTdHJvbmcgc21hbGwgR1BUIGZvciBjb2Rpbmcgc3ViYWdlbnRzLCBxdWljayB0b29sIHVzZSwgYW5kIGhpZ2gtdm9sdW1lIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4xNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNzUsXCJvdXRwdXRcIjo0LjUsXCJjYWNoZV9yZWFkXCI6MC4wNzV9fSxcImdwdC00LjFcIjp7XCJpZFwiOlwiZ3B0LTQuMVwiLFwibmFtZVwiOlwiR1BULTQuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkxvbmctbGl2ZWQgR1BUIHdvcmtob3JzZSBmb3IgY29kaW5nLCBpbnN0cnVjdGlvbiBmb2xsb3dpbmcsIGFuZCBwcm9kdWN0aW9uIGFwcHNcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0NzU3NixcIm91dHB1dFwiOjMyNzY4fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo4LFwiY2FjaGVfcmVhZFwiOjAuNX19LFwibzMtZGVlcC1yZXNlYXJjaFwiOntcImlkXCI6XCJvMy1kZWVwLXJlc2VhcmNoXCIsXCJuYW1lXCI6XCJvMy1kZWVwLXJlc2VhcmNoXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVzZWFyY2ggbW9kZWwgZm9yIGxvbmctaG9yaXpvbiBpbnZlc3RpZ2F0aW9uLCBzeW50aGVzaXMsIGFuZCBhbmFseXRpY2FsIHJlcG9ydHNcIixcImZhbWlseVwiOlwib1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtZWRpdW1cIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDYtMjZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNi0yNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDAsXCJjYWNoZV9yZWFkXCI6Mi41fX0sXCJncHQtNS1taW5pXCI6e1wiaWRcIjpcImdwdC01LW1pbmlcIixcIm5hbWVcIjpcIkdQVC01IE1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJTbWFsbCBHUFQtNSBmb3IgcmVzcG9uc2l2ZSBhZ2VudHMsIGNvZGluZyBoZWxwLCBhbmQgZXZlcnlkYXkgYXV0b21hdGlvblwiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDUtMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjI1LFwib3V0cHV0XCI6MixcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ3B0LWltYWdlLTFcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTFcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0xXCIsXCJkZXNjcmlwdGlvblwiOlwiT3BlbkFJIGltYWdlIG1vZGVsIGZvciBwcm9kdWN0aW9uIGdlbmVyYXRpb24sIGVkaXRzLCBhbmQgYnJhbmQtc2FmZSB2aXN1YWwgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0yNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTI0XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9fSxcImdwdC00LjEtbWluaVwiOntcImlkXCI6XCJncHQtNC4xLW1pbmlcIixcIm5hbWVcIjpcIkdQVC00LjEgbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIkFmZm9yZGFibGUgR1BULTQuMSBsYW5lIGZvciBmYXN0IGNvZGluZyBoZWxwIGFuZCBzdHJ1Y3R1cmVkIGV4dHJhY3Rpb25cIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA0XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ3NTc2LFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MC40LFwib3V0cHV0XCI6MS42LFwiY2FjaGVfcmVhZFwiOjAuMX19LFwiZ3B0LTQtdHVyYm9cIjp7XCJpZFwiOlwiZ3B0LTQtdHVyYm9cIixcIm5hbWVcIjpcIkdQVC00IFR1cmJvXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29tcGFjdCBHUFQgbW9kZWwgZm9yIGxvdy1sYXRlbmN5IGFzc2lzdGFuY2UgYW5kIGhpZ2gtdm9sdW1lIHdvcmtsb2Fkc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0xMlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIzLTExLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDQtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjQwOTZ9LFwiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjozMH19LFwiZ3B0LWltYWdlLTEtbWluaVwiOntcImlkXCI6XCJncHQtaW1hZ2UtMS1taW5pXCIsXCJuYW1lXCI6XCJncHQtaW1hZ2UtMS1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9fSxcImdwdC01LW5hbm9cIjp7XCJpZFwiOlwiZ3B0LTUtbmFub1wiLFwibmFtZVwiOlwiR1BULTUgTmFub1wiLFwiZGVzY3JpcHRpb25cIjpcIlRpbnkgR1BULTUgbGFuZSBmb3Igcm91dGluZywgZXh0cmFjdGlvbiwgY2xhc3NpZmljYXRpb24sIGFuZCBidWxrIGpvYnNcIixcImZhbWlseVwiOlwiZ3B0LW5hbm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MC4wNSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAwNX19LFwiZ3B0LTUuNC1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUuNC1wcm9cIixcIm5hbWVcIjpcIkdQVC01LjQgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiTW9yZSBleGFjdCBHUFQtNS40IHRpZXIgZm9yIGRlbWFuZGluZyBwcm9mZXNzaW9uYWwgcmVhc29uaW5nIGFuZCBhZ2VudCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHQtcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjE4MCxcInRpZXJzXCI6W3tcImlucHV0XCI6NjAsXCJvdXRwdXRcIjoyNzAsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MH19fSxcImdwdC01LjUtcHJvXCI6e1wiaWRcIjpcImdwdC01LjUtcHJvXCIsXCJuYW1lXCI6XCJHUFQtNS41IFByb1wiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2hlc3QtYWNjdXJhY3kgR1BULTUuNSB0aWVyIGZvciBzbG93ZXIsIHByZWNpc2lvbi1oZWF2eSByZWFzb25pbmcgYW5kIGNvZGluZ1wiLFwiZmFtaWx5XCI6XCJncHQtcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTEyLTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMjNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0yM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjoxODAsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjYwLFwib3V0cHV0XCI6MjcwLFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NjAsXCJvdXRwdXRcIjoyNzB9fX0sXCJncHQtNG8tbWluaVwiOntcImlkXCI6XCJncHQtNG8tbWluaVwiLFwibmFtZVwiOlwiR1BULTRvIG1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJTbWFsbCBvbW5pIEdQVCBmb3IgY2hlYXAgbXVsdGltb2RhbCBhc3Npc3RhbmNlIGFuZCBwcm9kdWN0aW9uLXNjYWxlIHRyYWZmaWNcIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDctMThcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNy0xOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjE1LFwib3V0cHV0XCI6MC42LFwiY2FjaGVfcmVhZFwiOjAuMDc1fX0sXCJncHQtNS42LXNvbFwiOntcImlkXCI6XCJncHQtNS42LXNvbFwiLFwibmFtZVwiOlwiR1BULTUuNiBTb2xcIixcImRlc2NyaXB0aW9uXCI6XCJGcm9udGllciBHUFQtNS42IG1vZGVsIGZvciBjb21wbGV4IHByb2Zlc3Npb25hbCB3b3JrLCBjb2RpbmcsIGFuZCBhZ2VudGljIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo2MCxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fSxcInByb1wiOntcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInJlYXNvbmluZ1wiOntcIm1vZGVcIjpcInByb1wifX19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fX19LFwiZ3B0LTUtY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUtY29kZXhcIixcIm5hbWVcIjpcIkdQVC01LUNvZGV4XCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjItY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUuMi1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUuMiBDb2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGUtc3BlY2lhbGlzdCBHUFQgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBsb25nLXJ1bm5pbmcgc29mdHdhcmUgYWdlbnRzXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC1pbWFnZS0yXCI6e1wiaWRcIjpcImdwdC1pbWFnZS0yXCIsXCJuYW1lXCI6XCJncHQtaW1hZ2UtMlwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMjFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0yMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtNS4xXCI6e1wiaWRcIjpcImdwdC01LjFcIixcIm5hbWVcIjpcIkdQVC01LjFcIixcImRlc2NyaXB0aW9uXCI6XCJTaGFycGVyIEdQVC01IGdlbmVyYXRpb24gZm9yIGNvZGluZywgcHJvZHVjdCB3b3JrLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS41XCI6e1wiaWRcIjpcImdwdC01LjVcIixcIm5hbWVcIjpcIkdQVC01LjVcIixcImRlc2NyaXB0aW9uXCI6XCJEZWZhdWx0IGZyb250aWVyIEdQVCBmb3IgY29kaW5nLCBjb21wdXRlciB1c2UsIHJlc2VhcmNoLCBhbmQga25vd2xlZGdlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMTItMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0yM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTIzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjoxMi41LFwib3V0cHV0XCI6NzUsXCJjYWNoZV9yZWFkXCI6MS4yNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MX19fX19LFwieGFpXCI6e1wibW9kZWxzXCI6e1wiZ3Jvay00LjIwLW11bHRpLWFnZW50LTAzMDlcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLW11bHRpLWFnZW50LTAzMDlcIixcIm5hbWVcIjpcIkdyb2sgNC4yMCBNdWx0aS1BZ2VudFwiLFwiZGVzY3JpcHRpb25cIjpcIkdyb2sgbW9kZWwgZm9yIGFnZW50aWMgdG9vbCB1c2UsIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbGl2ZSBhc3Npc3RhbmNlXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2stNC4yMC0wMzA5LW5vbi1yZWFzb25pbmdcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLTAzMDktbm9uLXJlYXNvbmluZ1wiLFwibmFtZVwiOlwiR3JvayA0LjIwIChOb24tUmVhc29uaW5nKVwiLFwiZGVzY3JpcHRpb25cIjpcIkdyb2sgbW9kZWwgZm9yIGFnZW50aWMgdG9vbCB1c2UsIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbGl2ZSBhc3Npc3RhbmNlXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjMwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ3Jvay00LjNcIjp7XCJpZFwiOlwiZ3Jvay00LjNcIixcIm5hbWVcIjpcIkdyb2sgNC4zXCIsXCJkZXNjcmlwdGlvblwiOlwieEFJJ3MgR3JvayBmb3IgY2hhdCwgY29kaW5nLCBhZ2VudGljIHRvb2xzLCBhbmQgbG93ZXIgaGFsbHVjaW5hdGlvbiByaXNrXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MzAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJncm9rLWltYWdpbmUtaW1hZ2UtcXVhbGl0eVwiOntcImlkXCI6XCJncm9rLWltYWdpbmUtaW1hZ2UtcXVhbGl0eVwiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIEltYWdlIFF1YWxpdHlcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1wiaW1hZ2VcIixcInBkZlwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgwMDAsXCJvdXRwdXRcIjowfX0sXCJncm9rLWltYWdpbmUtdmlkZW9cIjp7XCJpZFwiOlwiZ3Jvay1pbWFnaW5lLXZpZGVvXCIsXCJuYW1lXCI6XCJHcm9rIEltYWdpbmUgVmlkZW9cIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMS0yOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAxLTI4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInZpZGVvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAyNCxcIm91dHB1dFwiOjB9fSxcImdyb2stNC41XCI6e1wiaWRcIjpcImdyb2stNC41XCIsXCJuYW1lXCI6XCJHcm9rIDQuNVwiLFwiZGVzY3JpcHRpb25cIjpcInhBSSdzIGxhdGVzdCBHcm9rIGZvciBjaGF0LCBjb2RpbmcsIGFnZW50aWMgdG9vbHMsIGFuZCBsb3dlciBoYWxsdWNpbmF0aW9uIHJpc2tcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNy0wOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA3LTA4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjUwMDAwMCxcIm91dHB1dFwiOjUwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6NixcImNhY2hlX3JlYWRcIjowLjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjoxLFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjF9fX0sXCJncm9rLTQuMjAtMDMwOS1yZWFzb25pbmdcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLTAzMDktcmVhc29uaW5nXCIsXCJuYW1lXCI6XCJHcm9rIDQuMjAgKFJlYXNvbmluZylcIixcImRlc2NyaXB0aW9uXCI6XCJSZWFzb25pbmcgR3JvayBmb3IgZG9jdW1lbnQtaGVhdnkgYW5hbHlzaXMgYW5kIGxvbmctaG9yaXpvbiB0b29sIHVzZVwiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2staW1hZ2luZS1pbWFnZVwiOntcImlkXCI6XCJncm9rLWltYWdpbmUtaW1hZ2VcIixcIm5hbWVcIjpcIkdyb2sgSW1hZ2luZSBJbWFnZVwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAxLTI4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDEtMjhcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJpbWFnZVwiLFwicGRmXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODAwMCxcIm91dHB1dFwiOjB9fSxcImdyb2stYnVpbGQtMC4xXCI6e1wiaWRcIjpcImdyb2stYnVpbGQtMC4xXCIsXCJuYW1lXCI6XCJHcm9rIEJ1aWxkIDAuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR3JvayBjb2RpbmcgbW9kZWwgdHVuZWQgZm9yIGFnZW50aWMgZW5naW5lZXJpbmcgYW5kIGl0ZXJhdGl2ZSBlZGl0c1wiLFwiZmFtaWx5XCI6XCJncm9rLWJ1aWxkXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjI1NjAwMCxcIm91dHB1dFwiOjI1NjAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6MixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo0LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo0LFwiY2FjaGVfcmVhZFwiOjAuNH19fX19fSIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCBzbmFwc2hvdCBmcm9tICcuL2NhdGFsb2ctc25hcHNob3QuanNvbicgd2l0aCB7IHR5cGU6ICdqc29uJyB9XG5cbmNvbnN0IENBVEFMT0dfVVJMID0gJ2h0dHBzOi8vbW9kZWxzLmRldi9hcGkuanNvbidcbmNvbnN0IFNVUFBPUlRFRCA9IFsnZ29vZ2xlJywgJ2FudGhyb3BpYycsICdvcGVuYWknLCAneGFpJ11cbmNvbnN0IFRUTCA9IDI0ICogNjAgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gY2FjaGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnbW9kZWxzLWNhY2hlLmpzb24nKVxufVxuXG5mdW5jdGlvbiBzdWJzZXQoZGF0YSkge1xuICBjb25zdCBvdXQgPSB7fVxuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIFNVUFBPUlRFRCkge1xuICAgIGlmIChkYXRhW3Byb3ZpZGVyXT8ubW9kZWxzKSBvdXRbcHJvdmlkZXJdID0geyBtb2RlbHM6IGRhdGFbcHJvdmlkZXJdLm1vZGVscyB9XG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ2FjaGUoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY2FjaGVGaWxlKCksICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWZyZXNoQ2F0YWxvZyh7IGZldGNoZXIgPSBmZXRjaCB9ID0ge30pIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaGVyKENBVEFMT0dfVVJMKVxuICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoYGNhdGFsb2cgZmV0Y2ggZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICBjb25zdCBwcm92aWRlcnMgPSBzdWJzZXQoYXdhaXQgcmVzcG9uc2UuanNvbigpKVxuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKGNhY2hlRmlsZSgpLCBKU09OLnN0cmluZ2lmeSh7IGF0OiBEYXRlLm5vdygpLCBwcm92aWRlcnMgfSkpXG4gIHJldHVybiBwcm92aWRlcnNcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRDYXRhbG9nKHsgZmV0Y2hlciA9IGZldGNoIH0gPSB7fSkge1xuICBjb25zdCBjYWNoZWQgPSBhd2FpdCByZWFkQ2FjaGUoKVxuICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQuYXQgPCBUVEwpIHJldHVybiBjYWNoZWQucHJvdmlkZXJzXG4gIHJlZnJlc2hDYXRhbG9nKHsgZmV0Y2hlciB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgcmV0dXJuIGNhY2hlZD8ucHJvdmlkZXJzIHx8IHNuYXBzaG90XG59XG5cbmNvbnN0IHRleHRNb2RlbCA9IChtKSA9PlxuICBtLnRvb2xfY2FsbCA9PT0gdHJ1ZSAmJlxuICAoIW0ubW9kYWxpdGllcyB8fCAobS5tb2RhbGl0aWVzLmlucHV0Py5pbmNsdWRlcygndGV4dCcpICYmIG0ubW9kYWxpdGllcy5vdXRwdXQ/LmluY2x1ZGVzKCd0ZXh0JykpKVxuXG5jb25zdCBkYXRlZER1cGxpY2F0ZSA9IChpZCkgPT4gLy1cXGR7OH0kLy50ZXN0KGlkKVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE1vZGVscyhwcm92aWRlcnMsIHByb3ZpZGVySWRzKSB7XG4gIGNvbnN0IG9yZGVyID0gU1VQUE9SVEVELmZpbHRlcigocCkgPT4gcHJvdmlkZXJJZHMuaW5jbHVkZXMocCkpXG4gIGNvbnN0IG1vZGVscyA9IFtdXG4gIGZvciAoY29uc3QgcHJvdmlkZXIgb2Ygb3JkZXIpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocHJvdmlkZXJzW3Byb3ZpZGVyXT8ubW9kZWxzIHx8IHt9KVxuICAgICAgLmZpbHRlcigoW2lkLCBtXSkgPT4gdGV4dE1vZGVsKG0pICYmICFkYXRlZER1cGxpY2F0ZShpZCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gU3RyaW5nKGJbMV0ucmVsZWFzZV9kYXRlIHx8ICcnKS5sb2NhbGVDb21wYXJlKFN0cmluZyhhWzFdLnJlbGVhc2VfZGF0ZSB8fCAnJykpKVxuICAgIGZvciAoY29uc3QgW2lkLCBtXSBvZiBlbnRyaWVzKSB7XG4gICAgICBtb2RlbHMucHVzaCh7XG4gICAgICAgIG5hbWU6IGAke3Byb3ZpZGVyfS8ke2lkfWAsXG4gICAgICAgIHByb3ZpZGVyLFxuICAgICAgICBkZXNjOiBtLmRlc2NyaXB0aW9uIHx8IG0ubmFtZSB8fCBpZCxcbiAgICAgICAgcHJpY2U6IG0uY29zdCAmJiBtLmNvc3QuaW5wdXQgIT0gbnVsbCA/IHsgaW46IG0uY29zdC5pbnB1dCwgb3V0OiBtLmNvc3Qub3V0cHV0IH0gOiBudWxsLFxuICAgICAgICBlZmZvcnQ6ICEhbS5yZWFzb25pbmcsXG4gICAgICAgIC8vIHRoZSBtZWFzdXJlZCBmaWxsIG51bWJlciBpcyBpbnB1dCB0b2tlbnMsIHNvIHByZWZlciB0aGUgaW5wdXQgbGltaXRcbiAgICAgICAgLy8gYXMgdGhlIGRlbm9taW5hdG9yIHdoZXJlIHRoZSBwcm92aWRlciBkaXN0aW5ndWlzaGVzIGl0XG4gICAgICAgIGNvbnRleHQ6IG0ubGltaXQ/LmlucHV0IHx8IG0ubGltaXQ/LmNvbnRleHQgfHwgbnVsbCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RlbHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkaG9jTW9kZWwobmFtZSwgcHJvdmlkZXJJZHMpIHtcbiAgY29uc3QgbWF0Y2ggPSBuYW1lLm1hdGNoKC9eKFthLXowLTktXSspXFwvKC4rKSQvKVxuICBpZiAoIW1hdGNoIHx8ICFwcm92aWRlcklkcy5pbmNsdWRlcyhtYXRjaFsxXSkpIHJldHVybiBudWxsXG4gIHJldHVybiB7XG4gICAgbmFtZSxcbiAgICBwcm92aWRlcjogbWF0Y2hbMV0sXG4gICAgZGVzYzogJ25vdCBpbiBjYXRhbG9nJyxcbiAgICBwcmljZTogbnVsbCxcbiAgICBlZmZvcnQ6IGZhbHNlLFxuICAgIGNvbnRleHQ6IG51bGwsXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuLy8gdGhlIGJhY2tlbmQgaGlkZXMgbW9kZWxzIGZyb20gY2xpZW50cyBiZWxvdyBhIHZlcnNpb24gZmxvb3IsIHNvIHNlbmQgYVxuLy8gdmVyc2lvbiBjb21mb3J0YWJseSBhYm92ZSBpdFxuY29uc3QgTU9ERUxTX1VSTCA9ICdodHRwczovL2NoYXRncHQuY29tL2JhY2tlbmQtYXBpL2NvZGV4L21vZGVscz9jbGllbnRfdmVyc2lvbj0yLjAuMCdcbmNvbnN0IFRUTCA9IDI0ICogNjAgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gY2FjaGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnY29kZXgtbW9kZWxzLWNhY2hlLmpzb24nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwQ29kZXhNb2RlbHMoZW50cmllcykge1xuICByZXR1cm4gZW50cmllcy5tYXAoKG0pID0+ICh7XG4gICAgbmFtZTogYGNvZGV4LyR7bS5zbHVnfWAsXG4gICAgcHJvdmlkZXI6ICdjb2RleCcsXG4gICAgZGVzYzogYCR7bS5kZXNjcmlwdGlvbiB8fCBtLmxhYmVsIHx8IG0uc2x1Z30gXHUwMEI3IHZpYSBDaGF0R1BUIHBsYW5gLFxuICAgIHByaWNlOiBudWxsLFxuICAgIGVmZm9ydDogdHJ1ZSxcbiAgICBjb250ZXh0OiBtLmNvbnRleHRfd2luZG93IHx8IG51bGwsXG4gIH0pKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENvZGV4TW9kZWxzKGNyZWRlbnRpYWxzKSB7XG4gIGxldCBjYWNoZWQgPSBudWxsXG4gIHRyeSB7XG4gICAgY2FjaGVkID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYWNoZUZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge31cbiAgaWYgKGNhY2hlZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLmF0IDwgVFRMKSByZXR1cm4gbWFwQ29kZXhNb2RlbHMoY2FjaGVkLm1vZGVscylcbiAgaWYgKCFjcmVkZW50aWFscykgcmV0dXJuIG1hcENvZGV4TW9kZWxzKGNhY2hlZD8ubW9kZWxzIHx8IFtdKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChNT0RFTFNfVVJMLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtjcmVkZW50aWFscy5hcGlLZXl9YCxcbiAgICAgICAgLi4uY3JlZGVudGlhbHMuaGVhZGVycyxcbiAgICAgICAgb3JpZ2luYXRvcjogJ2NvZGV4X2NsaV9ycycsXG4gICAgICB9LFxuICAgIH0pXG4gICAgaWYgKCFyZXNwb25zZS5vaykgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhyZXNwb25zZS5zdGF0dXMpKVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBjb25zdCBtb2RlbHMgPSAoZGF0YS5tb2RlbHMgfHwgW10pLm1hcCgobSkgPT4gKHtcbiAgICAgIHNsdWc6IG0uc2x1ZyxcbiAgICAgIGRlc2NyaXB0aW9uOiBtLmRlc2NyaXB0aW9uLFxuICAgICAgbGFiZWw6IG0ubGFiZWwgfHwgbS5kaXNwbGF5X25hbWUsXG4gICAgICBjb250ZXh0X3dpbmRvdzogbS5jb250ZXh0X3dpbmRvdyB8fCBtLm1heF9jb250ZXh0X3dpbmRvdyB8fCBudWxsLFxuICAgIH0pKVxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2VtcHR5IG1vZGVsIGxpc3QnKVxuICAgIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICAgIGF3YWl0IHdyaXRlRmlsZShjYWNoZUZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoeyBhdDogRGF0ZS5ub3coKSwgbW9kZWxzIH0pKVxuICAgIHJldHVybiBtYXBDb2RleE1vZGVscyhtb2RlbHMpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBtYXBDb2RleE1vZGVscyhjYWNoZWQ/Lm1vZGVscyB8fCBbXSlcbiAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNlcnZlciB9IGZyb20gJ25vZGU6aHR0cCdcbmltcG9ydCB7IHJhbmRvbUJ5dGVzLCBjcmVhdGVIYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5pbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUsIGNobW9kIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuY29uc3QgQ0xJRU5UX0lEID0gJ2FwcF9FTW9hbUVFWjczZjBDa1hhWHA3aHJhbm4nXG5jb25zdCBBVVRIX1VSTCA9ICdodHRwczovL2F1dGgub3BlbmFpLmNvbS9vYXV0aC9hdXRob3JpemUnXG5jb25zdCBUT0tFTl9VUkwgPSAnaHR0cHM6Ly9hdXRoLm9wZW5haS5jb20vb2F1dGgvdG9rZW4nXG5jb25zdCBSRURJUkVDVF9QT1JUID0gMTQ1NVxuY29uc3QgUkVESVJFQ1RfVVJJID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRURJUkVDVF9QT1JUfS9hdXRoL2NhbGxiYWNrYFxuY29uc3QgU0NPUEUgPSAnb3BlbmlkIHByb2ZpbGUgZW1haWwgb2ZmbGluZV9hY2Nlc3MnXG5jb25zdCBSRUZSRVNIX1NLRVdfTVMgPSA1ICogNjAgKiAxMDAwXG5cbmZ1bmN0aW9uIGF1dGhGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnYXV0aC5qc29uJylcbn1cblxuZnVuY3Rpb24gYmFzZTY0dXJsKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKS5yZXBsYWNlKC9cXCsvZywgJy0nKS5yZXBsYWNlKC9cXC8vZywgJ18nKS5yZXBsYWNlKC89KyQvLCAnJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUp3dENsYWltcyh0b2tlbikge1xuICB0cnkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB0b2tlbi5zcGxpdCgnLicpWzFdXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoQnVmZmVyLmZyb20ocGF5bG9hZCwgJ2Jhc2U2NHVybCcpLnRvU3RyaW5nKCd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWNjb3VudElkRnJvbUNsYWltcyhjbGFpbXMpIHtcbiAgcmV0dXJuIGNsYWltc1snaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS9hdXRoJ10/LmNoYXRncHRfYWNjb3VudF9pZCB8fCBjbGFpbXMuY2hhdGdwdF9hY2NvdW50X2lkIHx8IG51bGxcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEF1dGgoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoYXV0aEZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7fVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQXV0aChhdXRoKSB7XG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoYXV0aEZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoYXV0aCwgbnVsbCwgMikgKyAnXFxuJylcbiAgYXdhaXQgY2htb2QoYXV0aEZpbGUoKSwgMG82MDApXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRva2VuUmVxdWVzdChwYXJhbXMpIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChUT0tFTl9VUkwsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9LFxuICAgIGJvZHk6IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKS50b1N0cmluZygpLFxuICB9KVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0b2tlbiByZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9ICR7YXdhaXQgcmVzcG9uc2UudGV4dCgpfWApXG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKVxufVxuXG5mdW5jdGlvbiBzdG9yZVRva2VucyhhdXRoLCB0b2tlbnMpIHtcbiAgY29uc3QgY2xhaW1zID0gdG9rZW5zLmlkX3Rva2VuID8gZGVjb2RlSnd0Q2xhaW1zKHRva2Vucy5pZF90b2tlbikgOiB7fVxuICBhdXRoLm9wZW5haSA9IHtcbiAgICBhY2Nlc3NfdG9rZW46IHRva2Vucy5hY2Nlc3NfdG9rZW4sXG4gICAgcmVmcmVzaF90b2tlbjogdG9rZW5zLnJlZnJlc2hfdG9rZW4gfHwgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4sXG4gICAgaWRfdG9rZW46IHRva2Vucy5pZF90b2tlbiB8fCBhdXRoLm9wZW5haT8uaWRfdG9rZW4sXG4gICAgYWNjb3VudF9pZDogYWNjb3VudElkRnJvbUNsYWltcyhjbGFpbXMpIHx8IGF1dGgub3BlbmFpPy5hY2NvdW50X2lkIHx8IG51bGwsXG4gICAgZW1haWw6IGNsYWltcy5lbWFpbCB8fCBhdXRoLm9wZW5haT8uZW1haWwgfHwgbnVsbCxcbiAgICBleHBpcmVzX2F0OiBEYXRlLm5vdygpICsgKHRva2Vucy5leHBpcmVzX2luIHx8IDM2MDApICogMTAwMCxcbiAgfVxuICByZXR1cm4gYXV0aFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29ubmVjdE9wZW5BSSh7IG9wZW5Ccm93c2VyID0gdHJ1ZSwgdGltZW91dE1zID0gNSAqIDYwICogMTAwMCwgb25VcmwgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3QgdmVyaWZpZXIgPSBiYXNlNjR1cmwocmFuZG9tQnl0ZXMoNjQpKVxuICBjb25zdCBjaGFsbGVuZ2UgPSBiYXNlNjR1cmwoY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZlcmlmaWVyKS5kaWdlc3QoKSlcbiAgY29uc3Qgc3RhdGUgPSBiYXNlNjR1cmwocmFuZG9tQnl0ZXMoMjQpKVxuXG4gIGNvbnN0IHVybCA9IGAke0FVVEhfVVJMfT8ke25ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgIHJlc3BvbnNlX3R5cGU6ICdjb2RlJyxcbiAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICByZWRpcmVjdF91cmk6IFJFRElSRUNUX1VSSSxcbiAgICBzY29wZTogU0NPUEUsXG4gICAgY29kZV9jaGFsbGVuZ2U6IGNoYWxsZW5nZSxcbiAgICBjb2RlX2NoYWxsZW5nZV9tZXRob2Q6ICdTMjU2JyxcbiAgICBzdGF0ZSxcbiAgICBwcm9tcHQ6ICdsb2dpbicsXG4gICAgaWRfdG9rZW5fYWRkX29yZ2FuaXphdGlvbnM6ICd0cnVlJyxcbiAgICBjb2RleF9jbGlfc2ltcGxpZmllZF9mbG93OiAndHJ1ZScsXG4gICAgb3JpZ2luYXRvcjogJ2NvZGV4X2NsaV9ycycsXG4gIH0pLnRvU3RyaW5nKCl9YFxuXG4gIGNvbnN0IGNvZGUgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc2VydmVyID0gY3JlYXRlU2VydmVyKChyZXEsIHJlcykgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdFVybCA9IG5ldyBVUkwocmVxLnVybCwgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRURJUkVDVF9QT1JUfWApXG4gICAgICBpZiAocmVxdWVzdFVybC5wYXRobmFtZSAhPT0gJy9hdXRoL2NhbGxiYWNrJykge1xuICAgICAgICByZXMud3JpdGVIZWFkKDQwNCkuZW5kKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBnb3RTdGF0ZSA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnc3RhdGUnKVxuICAgICAgY29uc3QgZ290Q29kZSA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnY29kZScpXG4gICAgICBjb25zdCBnb3RFcnJvciA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnZXJyb3InKVxuICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pXG4gICAgICByZXMuZW5kKFxuICAgICAgICBnb3RDb2RlICYmIGdvdFN0YXRlID09PSBzdGF0ZVxuICAgICAgICAgID8gJzxodG1sPjxib2R5IHN0eWxlPVwiZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IHBhZGRpbmc6IDJyZW1cIj5zaWduZWQgaW4gLSB5b3UgY2FuIHJldHVybiB0byBwaWNvPC9ib2R5PjwvaHRtbD4nXG4gICAgICAgICAgOiAnPGh0bWw+PGJvZHkgc3R5bGU9XCJmb250LWZhbWlseTogc2Fucy1zZXJpZjsgcGFkZGluZzogMnJlbVwiPnNpZ24taW4gZmFpbGVkIC0gcmV0dXJuIHRvIHBpY28gYW5kIHRyeSBhZ2FpbjwvYm9keT48L2h0bWw+JyxcbiAgICAgIClcbiAgICAgIGNsZWFudXAoKVxuICAgICAgaWYgKGdvdEVycm9yKSByZWplY3QobmV3IEVycm9yKGBhdXRob3JpemF0aW9uIGZhaWxlZDogJHtnb3RFcnJvcn1gKSlcbiAgICAgIGVsc2UgaWYgKCFnb3RDb2RlIHx8IGdvdFN0YXRlICE9PSBzdGF0ZSkgcmVqZWN0KG5ldyBFcnJvcignYXV0aG9yaXphdGlvbiBmYWlsZWQ6IG1pc3NpbmcgY29kZSBvciBzdGF0ZSBtaXNtYXRjaCcpKVxuICAgICAgZWxzZSByZXNvbHZlKGdvdENvZGUpXG4gICAgfSlcblxuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhbnVwKClcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoJ3NpZ24taW4gdGltZWQgb3V0JykpXG4gICAgfSwgdGltZW91dE1zKVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgIHNlcnZlci5jbG9zZSgpXG4gICAgfVxuXG4gICAgc2VydmVyLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGNsZWFudXAoKVxuICAgICAgcmVqZWN0KGVyci5jb2RlID09PSAnRUFERFJJTlVTRScgPyBuZXcgRXJyb3IoYHBvcnQgJHtSRURJUkVDVF9QT1JUfSBpcyBpbiB1c2UgKGlzIGFub3RoZXIgc2lnbi1pbiBvciBjb2RleCBydW5uaW5nPylgKSA6IGVycilcbiAgICB9KVxuICAgIHNlcnZlci5saXN0ZW4oUkVESVJFQ1RfUE9SVCwgJzEyNy4wLjAuMScsICgpID0+IHtcbiAgICAgIG9uVXJsKHVybClcbiAgICAgIGlmIChvcGVuQnJvd3NlcikgZXhlY0ZpbGUoJ29wZW4nLCBbdXJsXSwgKCkgPT4ge30pXG4gICAgfSlcbiAgfSlcblxuICBjb25zdCB0b2tlbnMgPSBhd2FpdCB0b2tlblJlcXVlc3Qoe1xuICAgIGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxuICAgIGNvZGUsXG4gICAgcmVkaXJlY3RfdXJpOiBSRURJUkVDVF9VUkksXG4gICAgY2xpZW50X2lkOiBDTElFTlRfSUQsXG4gICAgY29kZV92ZXJpZmllcjogdmVyaWZpZXIsXG4gIH0pXG5cbiAgY29uc3QgYXV0aCA9IHN0b3JlVG9rZW5zKGF3YWl0IHJlYWRBdXRoKCksIHRva2VucylcbiAgYXdhaXQgd3JpdGVBdXRoKGF1dGgpXG4gIHJldHVybiB7IGVtYWlsOiBhdXRoLm9wZW5haS5lbWFpbCwgYWNjb3VudElkOiBhdXRoLm9wZW5haS5hY2NvdW50X2lkIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haUNyZWRlbnRpYWxzKCkge1xuICBjb25zdCBhdXRoID0gYXdhaXQgcmVhZEF1dGgoKVxuICBjb25zdCBzdG9yZWQgPSBhdXRoLm9wZW5haVxuICBpZiAoIXN0b3JlZD8uYWNjZXNzX3Rva2VuKSByZXR1cm4gbnVsbFxuXG4gIGlmIChEYXRlLm5vdygpID4gKHN0b3JlZC5leHBpcmVzX2F0IHx8IDApIC0gUkVGUkVTSF9TS0VXX01TKSB7XG4gICAgaWYgKCFzdG9yZWQucmVmcmVzaF90b2tlbikgcmV0dXJuIG51bGxcbiAgICBjb25zdCB0b2tlbnMgPSBhd2FpdCB0b2tlblJlcXVlc3Qoe1xuICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgcmVmcmVzaF90b2tlbjogc3RvcmVkLnJlZnJlc2hfdG9rZW4sXG4gICAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICAgIHNjb3BlOiAnb3BlbmlkIHByb2ZpbGUgZW1haWwnLFxuICAgIH0pXG4gICAgY29uc3QgcmVmcmVzaGVkID0gc3RvcmVUb2tlbnMoYXV0aCwgdG9rZW5zKVxuICAgIGF3YWl0IHdyaXRlQXV0aChyZWZyZXNoZWQpXG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzRnJvbShyZWZyZXNoZWQub3BlbmFpKVxuICB9XG4gIHJldHVybiBjcmVkZW50aWFsc0Zyb20oc3RvcmVkKVxufVxuXG5mdW5jdGlvbiBjcmVkZW50aWFsc0Zyb20oc3RvcmVkKSB7XG4gIHJldHVybiB7XG4gICAgYXBpS2V5OiBzdG9yZWQuYWNjZXNzX3Rva2VuLFxuICAgIGhlYWRlcnM6IHN0b3JlZC5hY2NvdW50X2lkID8geyAnY2hhdGdwdC1hY2NvdW50LWlkJzogc3RvcmVkLmFjY291bnRfaWQgfSA6IHt9LFxuICAgIGVtYWlsOiBzdG9yZWQuZW1haWwsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haUNvbm5lY3RlZCgpIHtcbiAgY29uc3QgYXV0aCA9IGF3YWl0IHJlYWRBdXRoKClcbiAgcmV0dXJuICEhKGF1dGgub3BlbmFpPy5hY2Nlc3NfdG9rZW4gJiYgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuYWlTdGF0dXMoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIHJldHVybiB7XG4gICAgY29ubmVjdGVkOiAhIShhdXRoLm9wZW5haT8uYWNjZXNzX3Rva2VuICYmIGF1dGgub3BlbmFpPy5yZWZyZXNoX3Rva2VuKSxcbiAgICBlbWFpbDogYXV0aC5vcGVuYWk/LmVtYWlsIHx8IG51bGwsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3RPcGVuQUkoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIGRlbGV0ZSBhdXRoLm9wZW5haVxuICBhd2FpdCB3cml0ZUF1dGgoYXV0aClcbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gY29uZmlnRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ2NvbmZpZy5qc29uJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDb25maWcoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY29uZmlnRmlsZSgpLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29uZmlnKHBhdGNoKSB7XG4gIGNvbnN0IGNvbmZpZyA9IHsgLi4uKGF3YWl0IHJlYWRDb25maWcoKSksIC4uLnBhdGNoIH1cbiAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gIGF3YWl0IHdyaXRlRmlsZShjb25maWdGaWxlKCksIEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMikgKyAnXFxuJylcbiAgcmV0dXJuIGNvbmZpZ1xufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBnbG9iYWxBZ2VudHNGaWxlIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gcmVhZElmRXhpc3RzKHBhdGgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXhpc3RzU3luYyhwYXRoKSA/IHJlYWRGaWxlU3luYyhwYXRoLCAndXRmLTgnKSA6IG51bGxcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGV4dFN0b3BEaXIoY3dkKSB7XG4gIGxldCBkaXIgPSByZXNvbHZlKGN3ZClcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChleGlzdHNTeW5jKGpvaW4oZGlyLCAnLmdpdCcpKSB8fCBkaXIgPT09IGhvbWUpIHJldHVybiBkaXJcbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcilcbiAgICBpZiAocGFyZW50ID09PSBkaXIpIHJldHVybiByZXNvbHZlKGN3ZClcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxufVxuXG5mdW5jdGlvbiBhbmNlc3RvckRpcnMoY3dkLCBzdG9wRGlyKSB7XG4gIGNvbnN0IGRpcnMgPSBbXVxuICBsZXQgZGlyID0gcmVzb2x2ZShjd2QpXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgZGlycy51bnNoaWZ0KGRpcilcbiAgICBpZiAoZGlyID09PSBzdG9wRGlyKSBicmVha1xuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKVxuICAgIGlmIChwYXJlbnQgPT09IGRpcikgYnJlYWtcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxuICByZXR1cm4gZGlyc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFN0YXJ0dXBDb250ZXh0KGN3ZCkge1xuICBjb25zdCBzdG9wRGlyID0gY29udGV4dFN0b3BEaXIoY3dkKVxuICBjb25zdCBmaWxlcyA9IFtdXG4gIGNvbnN0IGdsb2JhbENvbnRlbnQgPSByZWFkSWZFeGlzdHMoZ2xvYmFsQWdlbnRzRmlsZSgpKVxuICBpZiAoZ2xvYmFsQ29udGVudCkgZmlsZXMucHVzaCh7IHBhdGg6IGdsb2JhbEFnZW50c0ZpbGUoKSwgY29udGVudDogZ2xvYmFsQ29udGVudCB9KVxuICBmb3IgKGNvbnN0IGRpciBvZiBhbmNlc3RvckRpcnMoY3dkLCBzdG9wRGlyKSkge1xuICAgIGNvbnN0IHBhdGggPSBqb2luKGRpciwgJ0FHRU5UUy5tZCcpXG4gICAgY29uc3QgY29udGVudCA9IHJlYWRJZkV4aXN0cyhwYXRoKVxuICAgIGlmIChjb250ZW50KSBmaWxlcy5wdXNoKHsgcGF0aCwgY29udGVudCB9KVxuICB9XG4gIHJldHVybiB7IGZpbGVzLCBzdG9wRGlyIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHRUcmFja2VyKHsgc3RvcERpciwgbG9hZGVkIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBsb2FkZWQsXG4gICAgY2hlY2soZmlsZVBhdGgpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGRpcm5hbWUocmVzb2x2ZShmaWxlUGF0aCkpXG4gICAgICBpZiAoIXRhcmdldC5zdGFydHNXaXRoKHN0b3BEaXIpKSByZXR1cm4gW11cbiAgICAgIGNvbnN0IGZyZXNoID0gW11cbiAgICAgIGZvciAoY29uc3QgZGlyIG9mIGFuY2VzdG9yRGlycyh0YXJnZXQsIHN0b3BEaXIpKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBqb2luKGRpciwgJ0FHRU5UUy5tZCcpXG4gICAgICAgIGlmIChsb2FkZWQuaGFzKHBhdGgpKSBjb250aW51ZVxuICAgICAgICBjb25zdCBjb250ZW50ID0gcmVhZElmRXhpc3RzKHBhdGgpXG4gICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgbG9hZGVkLmFkZChwYXRoKVxuICAgICAgICAgIGZyZXNoLnB1c2goeyBwYXRoLCBjb250ZW50IH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmcmVzaFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgcmVhZGRpciB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgZ2xvYmFsU2tpbGxzRGlyLCBwcm9qZWN0U2tpbGxzRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXIodGV4dCkge1xuICBjb25zdCBtYXRjaCA9IHRleHQubWF0Y2goL14tLS1cXG4oW1xcc1xcU10qPylcXG4tLS1cXG4/LylcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIHsgbWV0YToge30sIGJvZHk6IHRleHQgfVxuICBjb25zdCBtZXRhID0ge31cbiAgZm9yIChjb25zdCBsaW5lIG9mIG1hdGNoWzFdLnNwbGl0KCdcXG4nKSkge1xuICAgIGNvbnN0IHNlcCA9IGxpbmUuaW5kZXhPZignOicpXG4gICAgaWYgKHNlcCA9PT0gLTEpIGNvbnRpbnVlXG4gICAgbWV0YVtsaW5lLnNsaWNlKDAsIHNlcCkudHJpbSgpXSA9IGxpbmUuc2xpY2Uoc2VwICsgMSkudHJpbSgpXG4gIH1cbiAgcmV0dXJuIHsgbWV0YSwgYm9keTogdGV4dC5zbGljZShtYXRjaFswXS5sZW5ndGgpIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNvdXJjZSkge1xuICBsZXQgbmFtZXMgPSBbXVxuICB0cnkge1xuICAgIG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxuICBjb25zdCBza2lsbHMgPSBbXVxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIG5hbWVzKSB7XG4gICAgaWYgKCFlbnRyeS5pc0RpcmVjdG9yeSgpKSBjb250aW51ZVxuICAgIGNvbnN0IGZpbGUgPSBqb2luKGRpciwgZW50cnkubmFtZSwgJ1NLSUxMLm1kJylcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBtZXRhIH0gPSBwYXJzZUZyb250bWF0dGVyKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICAgICAgc2tpbGxzLnB1c2goe1xuICAgICAgICBuYW1lOiBtZXRhLm5hbWUgfHwgZW50cnkubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGEuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgZmlsZSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBza2lsbHNcbn1cblxuY29uc3QgQVNLX1JVTEUgPSBgQmVmb3JlIHdyaXRpbmcgYW55dGhpbmcsIHJlc29sdmUgYW1iaWd1aXR5OlxuLSBJZiB0aGUgdXNlciBkaWQgbm90IHNheSBnbG9iYWwgb3IgcHJvamVjdCwgYXNrIGV4YWN0bHkgb25lIHF1ZXN0aW9uOiBcImdsb2JhbCAoYXZhaWxhYmxlIGV2ZXJ5d2hlcmUpIG9yIGp1c3QgdGhpcyBwcm9qZWN0P1wiIERvIG5vdCBndWVzcyBzaWxlbnRseS5cbi0gSWYgdGhlIGJlaGF2aW9yIG9yIG91dHB1dCBpcyB1bmRlcnNwZWNpZmllZCwgc3RhdGUgdGhlIGFzc3VtcHRpb25zIHlvdSBhcmUgbWFraW5nIGluIG9uZSBzaG9ydCBsaW5lIGJlZm9yZSBwcm9jZWVkaW5nLCBzbyB0aGUgdXNlciBjYW4gY29ycmVjdCB5b3UuYFxuXG5jb25zdCBORVdfVE9PTF9TS0lMTCA9IGBDcmVhdGUgYSBjdXN0b20gcGljbyB0b29sIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBwaWNvIHRvb2wgaXMgYW4gRVMgbW9kdWxlIHdob3NlIGRlZmF1bHQgZXhwb3J0IGlzIGVpdGhlciBhIHRvb2wgb2JqZWN0IG9yIGEgZmFjdG9yeVxuXFxgKGNvbnRleHQpID0+IHRvb2xcXGAgd2hlcmUgY29udGV4dCBpcyBcXGB7IGN3ZCwgcm9vdCB9XFxgLiBUaGUgdG9vbCBvYmplY3Qgc2hhcGU6XG5cblxcYFxcYFxcYGpzXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICd3b3JkX2NvdW50JyxcbiAgZGVzY3JpcHRpb246ICdDb3VudCB3b3JkcywgbGluZXMsIGFuZCBjaGFyYWN0ZXJzIGluIGEgZmlsZScsXG4gIHNjaGVtYToge1xuICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeScgfSxcbiAgICB3b3JkczogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnaW5jbHVkZSB3b3JkIGNvdW50Jywgb3B0aW9uYWw6IHRydWUgfSxcbiAgfSxcbiAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgd29yZHMgPSB0cnVlIH0pID0+IHtcbiAgICAvLyByZXR1cm4gYW55IEpTT04tc2VyaWFsaXphYmxlIHZhbHVlOyB0aHJvdyBhbiBFcnJvciB0byByZXBvcnQgZmFpbHVyZVxuICAgIHJldHVybiB7IHBhdGgsIHdvcmRzOiA0MiB9XG4gIH0sXG59XG5cXGBcXGBcXGBcblxuU2NoZW1hIHByb3BlcnRpZXMgc3VwcG9ydDogdHlwZSAoc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4sIGFycmF5LCBvYmplY3QpLCBkZXNjcmlwdGlvbixcbm9wdGlvbmFsLCBlbnVtIChzdHJpbmcgdmFsdWVzKSwgaXRlbXMgKGZvciBhcnJheXMpLCBwcm9wZXJ0aWVzIChmb3IgbmVzdGVkIG9iamVjdHMpLlxuXG5Mb2NhdGlvbnM6IFxcYC5waWNvL3Rvb2xzLzxuYW1lPi5qc1xcYCBpbiB0aGUgcHJvamVjdCByb290IGZvciBwcm9qZWN0IHRvb2xzLFxuXFxgfi8ucGljby90b29scy88bmFtZT4uanNcXGAgZm9yIHRvb2xzIGF2YWlsYWJsZSBldmVyeXdoZXJlLiBEZWZhdWx0IHRvIHRoZSBwcm9qZWN0IHVubGVzc1xudGhlIHVzZXIgYXNrcyBmb3IgYSBnbG9iYWwgdG9vbC4gTm9kZSBidWlsdGlucyBjYW4gYmUgaW1wb3J0ZWQ7IG5wbSBwYWNrYWdlcyBjYW5ub3QgYmVcbmFzc3VtZWQuIFRvb2xzIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gYSBuZXcgb3IgZWRpdGVkIHRvb2wgaXMgdXNhYmxlIG9uIHRoZSBuZXh0XG5tZXNzYWdlIHdpdGggbm8gcmVzdGFydC5cblxuU3RlcHM6XG4xLiBEZWNpZGUgdGhlIHRvb2wgbmFtZSAoc25ha2VfY2FzZSksIGlucHV0cywgYW5kIG91dHB1dCBzaGFwZSBmcm9tIHRoZSB1c2VyJ3MgcmVxdWVzdC5cbjIuIFdyaXRlIHRoZSBtb2R1bGUgdG8gdGhlIHJpZ2h0IGxvY2F0aW9uIHdpdGggdGhlIHdyaXRlIHRvb2wuXG4zLiBTYW5pdHktY2hlY2sgaXQgbG9hZHM6IFxcYG5vZGUgLS1pbnB1dC10eXBlPW1vZHVsZSAtZSBcImNvbnN0IHQgPSAoYXdhaXQgaW1wb3J0KCdmaWxlOi8vPGFicyBwYXRoPicpKS5kZWZhdWx0OyBjb25zb2xlLmxvZyh0Lm5hbWUpXCJcXGAgKGFkanVzdCBpZiB0aGUgZXhwb3J0IGlzIGEgZmFjdG9yeSkuXG40LiBUZWxsIHRoZSB1c2VyIHRoZSB0b29sIGlzIHJlYWR5IGFuZCB3aWxsIGJlIGF2YWlsYWJsZSBmcm9tIHRoZWlyIG5leHQgbWVzc2FnZS5gXG5cbmNvbnN0IE5FV19TS0lMTF9TS0lMTCA9IGBDcmVhdGUgYSBwaWNvIHNraWxsIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBza2lsbCBpcyBhIG1hcmtkb3duIGZpbGUgYXQgXFxgLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCAocHJvamVjdCkgb3JcblxcYH4vLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCAoZ2xvYmFsKSB3aXRoIGZyb250bWF0dGVyIGFuZCBhbiBpbnN0cnVjdGlvbiBib2R5OlxuXG5cXGBcXGBcXGBcbi0tLVxubmFtZTogcmVsZWFzZS1ub3Rlc1xuZGVzY3JpcHRpb246IGRyYWZ0IHJlbGVhc2Ugbm90ZXMgZnJvbSBjb21taXRzIHNpbmNlIHRoZSBsYXN0IHRhZ1xuLS0tXG5JbnN0cnVjdGlvbnMgdGhlIGFnZW50IGZvbGxvd3Mgd2hlbiB0aGlzIHNraWxsIGlzIGxvYWRlZC4gQmUgaW1wZXJhdGl2ZSBhbmQgc3BlY2lmaWMuXG5cXGBcXGBcXGBcblxuVGhlIGRlc2NyaXB0aW9uIG1hdHRlcnMgbW9zdDogaXQgaXMgbGlzdGVkIGluIHRoZSBhZ2VudCdzIHN5c3RlbSBwcm9tcHQsIGFuZCB0aGUgYWdlbnRcbmRlY2lkZXMgZnJvbSBpdCB3aGVuIHRvIGxvYWQgdGhlIHNraWxsIG9uIGl0cyBvd24uIFdyaXRlIGl0IGFzIGEgdHJpZ2dlciBjb25kaXRpb25cbihcIndoZW4gdGhlIHVzZXIgYXNrcyBmb3IgWFwiKSwgbm90IG1hcmtldGluZy4gVGhlIGJvZHkgaXMgb25seSBsb2FkZWQgb24gaW52b2NhdGlvbiwgc29cbml0IGNhbiBiZSBsb25nIGFuZCBkZXRhaWxlZC4gU3VwcG9ydGluZyBmaWxlcyBtYXkgc2l0IG5leHQgdG8gU0tJTEwubWQgaW4gdGhlIHNhbWVcbmRpcmVjdG9yeSBhbmQgYmUgcmVmZXJlbmNlZCBieSByZWxhdGl2ZSBwYXRoLlxuXG5Ta2lsbHMgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBhIG5ldyBza2lsbCBpcyB1c2FibGUgZnJvbSB0aGUgbmV4dCBtZXNzYWdlLmBcblxuY29uc3QgTkVXX0NPTU1BTkRfU0tJTEwgPSBgQ3JlYXRlIGEgcGljbyBjb21tYW5kIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBjb21tYW5kIGlzIGEgcHJvbXB0IHRlbXBsYXRlIHRoZSBVU0VSIGludm9rZXMgYXMgXFxgLzxuYW1lPiBbYXJnc11cXGAuIFRoZSBhZ2VudCBuZXZlclxuc2VlcyBjb21tYW5kcyB1bnRpbCBvbmUgaXMgcnVuLCBzbyB1c2UgYSBjb21tYW5kIGZvciB1c2VyLXRyaWdnZXJlZCBtYWNyb3MgYW5kIGEgc2tpbGxcbmZvciBjYXBhYmlsaXRpZXMgdGhlIGFnZW50IHNob3VsZCByZWFjaCBmb3Igb24gaXRzIG93bi5cblxuSXQgaXMgYSBtYXJrZG93biBmaWxlIGF0IFxcYC5waWNvL2NvbW1hbmRzLzxuYW1lPi5tZFxcYCAocHJvamVjdCkgb3JcblxcYH4vLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgIChnbG9iYWwpLCBvcHRpb25hbGx5IHdpdGggYSBkZXNjcmlwdGlvbiBpbiBmcm9udG1hdHRlcjpcblxuXFxgXFxgXFxgXG4tLS1cbmRlc2NyaXB0aW9uOiByZXZpZXcgYSBmaWxlIGZvciBzZWN1cml0eSBwcm9ibGVtc1xuLS0tXG5SZXZpZXcgJEFSR1VNRU5UUyBmb3Igc2VjdXJpdHkgcHJvYmxlbXMuIEZvY3VzIG9uIGlucHV0IHZhbGlkYXRpb24gYW5kIHNlY3JldHMuXG5cXGBcXGBcXGBcblxuXFxgJEFSR1VNRU5UU1xcYCBpcyByZXBsYWNlZCB3aXRoIHdoYXRldmVyIGZvbGxvd3MgdGhlIGNvbW1hbmQ7IHdpdGhvdXQgdGhlIHBsYWNlaG9sZGVyLFxuYXJndW1lbnRzIGFyZSBhcHBlbmRlZCBhZnRlciB0aGUgYm9keS4gQ29tbWFuZHMgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBhIG5ld1xuY29tbWFuZCBhcHBlYXJzIGluIHRoZSBzbGFzaCBtZW51IGZyb20gdGhlIG5leHQgbWVzc2FnZS5gXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTa2lsbEluZGV4KHJvb3QpIHtcbiAgY29uc3QgYnVpbHRpbiA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnbmV3LXRvb2wnLFxuICAgICAgZGVzY3JpcHRpb246ICdjcmVhdGUgYSBjdXN0b20gcGljbyB0b29sIGZyb20gYSBkZXNjcmlwdGlvbiBvZiB3aGF0IGl0IHNob3VsZCBkbycsXG4gICAgICBzb3VyY2U6ICdidWlsdGluJyxcbiAgICAgIGJvZHk6IE5FV19UT09MX1NLSUxMLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ25ldy1za2lsbCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ2NyZWF0ZSBhIHBpY28gc2tpbGwgdGhhdCB0ZWFjaGVzIHRoZSBhZ2VudCBhIHJldXNhYmxlIGNhcGFiaWxpdHknLFxuICAgICAgc291cmNlOiAnYnVpbHRpbicsXG4gICAgICBib2R5OiBORVdfU0tJTExfU0tJTEwsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnbmV3LWNvbW1hbmQnLFxuICAgICAgZGVzY3JpcHRpb246ICdjcmVhdGUgYSBwaWNvIHNsYXNoIGNvbW1hbmQsIGEgcHJvbXB0IHRlbXBsYXRlIHRoZSB1c2VyIGludm9rZXMnLFxuICAgICAgc291cmNlOiAnYnVpbHRpbicsXG4gICAgICBib2R5OiBORVdfQ09NTUFORF9TS0lMTCxcbiAgICB9LFxuICBdXG4gIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsU2tpbGxzRGlyKCksICdnbG9iYWwnKVxuICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgc2NhbkRpcihwcm9qZWN0U2tpbGxzRGlyKHJvb3QpLCAncHJvamVjdCcpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IHNraWxsIG9mIFsuLi5idWlsdGluLCAuLi5nbG9iYWwsIC4uLnByb2plY3RdKSBieU5hbWUuc2V0KHNraWxsLm5hbWUsIHNraWxsKVxuICBjb25zdCBza2lsbHMgPSBbLi4uYnlOYW1lLnZhbHVlcygpXVxuXG4gIHJldHVybiB7XG4gICAgbGlzdDogKCkgPT4gc2tpbGxzLFxuICAgIGFzeW5jIGxvYWQobmFtZSkge1xuICAgICAgY29uc3Qgc2tpbGwgPSBieU5hbWUuZ2V0KG5hbWUpXG4gICAgICBpZiAoIXNraWxsKSByZXR1cm4gbnVsbFxuICAgICAgaWYgKHNraWxsLmJvZHkpIHJldHVybiBza2lsbC5ib2R5XG4gICAgICBjb25zdCB7IGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoc2tpbGwuZmlsZSwgJ3V0Zi04JykpXG4gICAgICByZXR1cm4gYm9keVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgcmVhZGRpciB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGljb0hvbWUgfSBmcm9tICcuL3BhdGhzLmpzJ1xuaW1wb3J0IHsgcGFyc2VGcm9udG1hdHRlciB9IGZyb20gJy4vc2tpbGxzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsQ29tbWFuZHNEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdjb21tYW5kcycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0Q29tbWFuZHNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihyb290LCAnLnBpY28nLCAnY29tbWFuZHMnKVxufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FuRGlyKGRpciwgc291cmNlKSB7XG4gIGxldCBuYW1lcyA9IFtdXG4gIHRyeSB7XG4gICAgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3QgY29tbWFuZHMgPSBbXVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJy5tZCcpKSBjb250aW51ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG1ldGEgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoam9pbihkaXIsIGZpbGUpLCAndXRmLTgnKSlcbiAgICAgIGNvbW1hbmRzLnB1c2goe1xuICAgICAgICBuYW1lOiBmaWxlLnNsaWNlKDAsIC0zKSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGEuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgZmlsZTogam9pbihkaXIsIGZpbGUpLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIHt9XG4gIH1cbiAgcmV0dXJuIGNvbW1hbmRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBhbmRDb21tYW5kKGJvZHksIGFyZ3MpIHtcbiAgcmV0dXJuIGJvZHkuaW5jbHVkZXMoJyRBUkdVTUVOVFMnKVxuICAgID8gYm9keS5yZXBsYWNlQWxsKCckQVJHVU1FTlRTJywgYXJncylcbiAgICA6IGFyZ3NcbiAgICAgID8gYCR7Ym9keS50cmltKCl9XFxuXFxuJHthcmdzfWBcbiAgICAgIDogYm9keVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tbWFuZEluZGV4KHJvb3QpIHtcbiAgY29uc3QgZ2xvYmFsID0gYXdhaXQgc2NhbkRpcihnbG9iYWxDb21tYW5kc0RpcigpLCAnZ2xvYmFsJylcbiAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdENvbW1hbmRzRGlyKHJvb3QpLCAncHJvamVjdCcpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgWy4uLmdsb2JhbCwgLi4ucHJvamVjdF0pIGJ5TmFtZS5zZXQoY29tbWFuZC5uYW1lLCBjb21tYW5kKVxuICBjb25zdCBjb21tYW5kcyA9IFsuLi5ieU5hbWUudmFsdWVzKCldXG5cbiAgcmV0dXJuIHtcbiAgICBsaXN0OiAoKSA9PiBjb21tYW5kcyxcbiAgICBhc3luYyBsb2FkKG5hbWUsIGFyZ3MgPSAnJykge1xuICAgICAgY29uc3QgY29tbWFuZCA9IGJ5TmFtZS5nZXQobmFtZSlcbiAgICAgIGlmICghY29tbWFuZCkgcmV0dXJuIG51bGxcbiAgICAgIGNvbnN0IHsgYm9keSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShjb21tYW5kLmZpbGUsICd1dGYtOCcpKVxuICAgICAgcmV0dXJuIGV4cGFuZENvbW1hbmQoYm9keS50cmltKCksIGFyZ3MudHJpbSgpKVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGNvbm5lY3RNQ1AgfSBmcm9tICdAcHJzbS9haSdcbmltcG9ydCB7IGdsb2JhbE1jcEZpbGUsIHByb2plY3RNY3BGaWxlLCBwcm9qZWN0RGlyLCBlbnN1cmVEaXIsIHBpY29Ib21lIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gdG9rZW5pemUoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IFtdXG4gIGNvbnN0IHJlID0gLyhbQS1aYS16MC05Xy1dKz0pP1wiKFteXCJdKilcInwoW0EtWmEtejAtOV8tXSs9KT8nKFteJ10qKSd8KFxcUyspL2dcbiAgbGV0IG1cbiAgd2hpbGUgKChtID0gcmUuZXhlYyhzdHIpKSkge1xuICAgIGlmIChtWzFdICE9PSB1bmRlZmluZWQgfHwgbVszXSAhPT0gdW5kZWZpbmVkKSB0b2tlbnMucHVzaCgobVsxXSA/PyBtWzNdKSArIChtWzJdID8/IG1bNF0pKVxuICAgIGVsc2UgdG9rZW5zLnB1c2gobVsyXSA/PyBtWzRdID8/IG1bNV0pXG4gIH1cbiAgcmV0dXJuIHRva2Vuc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb21tYW5kKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSB0b2tlbml6ZShzdHIpXG5cbiAgY29uc3QgZW52ID0ge31cbiAgd2hpbGUgKHRva2Vucy5sZW5ndGggJiYgL15bQS1aYS16X11bQS1aYS16MC05X10qPS8udGVzdCh0b2tlbnNbMF0pKSB7XG4gICAgY29uc3Qgc2VwID0gdG9rZW5zWzBdLmluZGV4T2YoJz0nKVxuICAgIGVudlt0b2tlbnNbMF0uc2xpY2UoMCwgc2VwKV0gPSB0b2tlbnNbMF0uc2xpY2Uoc2VwICsgMSlcbiAgICB0b2tlbnMuc2hpZnQoKVxuICB9XG4gIGlmICghdG9rZW5zLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdlbXB0eSBjb21tYW5kJylcbiAgcmV0dXJuIHsgY29tbWFuZDogdG9rZW5zWzBdLCBhcmdzOiB0b2tlbnMuc2xpY2UoMSksIGVudiB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNlcnZlclNwZWMoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IHRva2VuaXplKHN0cilcbiAgaWYgKCEvXmh0dHBzPzpcXC9cXC8vLnRlc3QodG9rZW5zWzBdIHx8ICcnKSkgcmV0dXJuIHsgdHlwZTogJ3N0ZGlvJywgLi4ucGFyc2VDb21tYW5kKHN0cikgfVxuXG4gIGNvbnN0IFt1cmwsIC4uLnJlc3RdID0gdG9rZW5zXG4gIGNvbnN0IGhlYWRlcnMgPSB7fVxuICBmb3IgKGNvbnN0IHRva2VuIG9mIHJlc3QpIHtcbiAgICBjb25zdCBzZXAgPSB0b2tlbi5pbmRleE9mKCc9JylcbiAgICBpZiAoc2VwIDwgMSkgdGhyb3cgbmV3IEVycm9yKGBodHRwIHNlcnZlciBzcGVjIG9ubHkgdGFrZXMgYSB1cmwgYW5kIEhlYWRlcj12YWx1ZSBwYWlycywgZ290IFwiJHt0b2tlbn1cImApXG4gICAgaGVhZGVyc1t0b2tlbi5zbGljZSgwLCBzZXApXSA9IHRva2VuLnNsaWNlKHNlcCArIDEpXG4gIH1cbiAgcmV0dXJuIHsgdHlwZTogJ2h0dHAnLCB1cmwsIGhlYWRlcnMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkSnNvbihmaWxlLCBmYWxsYmFjaykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsbGJhY2tcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlZ2lzdHJ5KCkge1xuICByZXR1cm4gcmVhZEpzb24oZ2xvYmFsTWNwRmlsZSgpLCB7IHNlcnZlcnM6IHt9IH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVJlZ2lzdHJ5KHJlZ2lzdHJ5KSB7XG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoZ2xvYmFsTWNwRmlsZSgpLCBKU09OLnN0cmluZ2lmeShyZWdpc3RyeSwgbnVsbCwgMikgKyAnXFxuJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpIHtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZEpzb24ocHJvamVjdE1jcEZpbGUocm9vdCksIHt9KVxuICByZXR1cm4geyBkaXNhYmxlZDogY29uZmlnLmRpc2FibGVkIHx8IHt9LCBzZXJ2ZXJzOiBjb25maWcuc2VydmVycyB8fCB7fSB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKSB7XG4gIGVuc3VyZURpcihwcm9qZWN0RGlyKHJvb3QpKVxuICBhd2FpdCB3cml0ZUZpbGUocHJvamVjdE1jcEZpbGUocm9vdCksIEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMikgKyAnXFxuJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1jcFJ1bnRpbWUoeyByb290LCBvbkNoYW5nZSA9ICgpID0+IHt9IH0pIHtcbiAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICBjb25zdCBwcm9qZWN0Q29uZmlnID0gYXdhaXQgcmVhZFByb2plY3RDb25maWcocm9vdClcbiAgY29uc3Qgc2VydmVycyA9IG5ldyBNYXAoKVxuXG4gIGNvbnN0IHJlZ2lzdGVyID0gKG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgc2VydmVycy5zZXQobmFtZSwge1xuICAgICAgbmFtZSxcbiAgICAgIGNvbW1hbmQsXG4gICAgICBzY29wZSxcbiAgICAgIGVuYWJsZWQ6ICFwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdLFxuICAgICAgc3RhdHVzOiBwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdID8gJ2Rpc2FibGVkJyA6ICdpZGxlJyxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgY29ubmVjdGlvbjogbnVsbCxcbiAgICB9KVxuICB9XG4gIGZvciAoY29uc3QgW25hbWUsIGNvbW1hbmRdIG9mIE9iamVjdC5lbnRyaWVzKHJlZ2lzdHJ5LnNlcnZlcnMpKSByZWdpc3RlcihuYW1lLCBjb21tYW5kLCAnZ2xvYmFsJylcbiAgZm9yIChjb25zdCBbbmFtZSwgY29tbWFuZF0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdENvbmZpZy5zZXJ2ZXJzKSkgcmVnaXN0ZXIobmFtZSwgY29tbWFuZCwgJ3Byb2plY3QnKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHRyYW5zcG9ydEZhY3RvcnkoY29tbWFuZCkge1xuICAgIGNvbnN0IHNwZWMgPSBwYXJzZVNlcnZlclNwZWMoY29tbWFuZClcbiAgICBpZiAoc3BlYy50eXBlID09PSAnaHR0cCcpIHtcbiAgICAgIGNvbnN0IHsgU3RyZWFtYWJsZUhUVFBDbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RyZWFtYWJsZUh0dHAuanMnKVxuICAgICAgcmV0dXJuICgpID0+XG4gICAgICAgIG5ldyBTdHJlYW1hYmxlSFRUUENsaWVudFRyYW5zcG9ydChuZXcgVVJMKHNwZWMudXJsKSwge1xuICAgICAgICAgIHJlcXVlc3RJbml0OiBPYmplY3Qua2V5cyhzcGVjLmhlYWRlcnMpLmxlbmd0aCA/IHsgaGVhZGVyczogc3BlYy5oZWFkZXJzIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGNvbnN0IHsgU3RkaW9DbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RkaW8uanMnKVxuICAgIHJldHVybiAoKSA9PlxuICAgICAgbmV3IFN0ZGlvQ2xpZW50VHJhbnNwb3J0KHtcbiAgICAgICAgY29tbWFuZDogc3BlYy5jb21tYW5kLFxuICAgICAgICBhcmdzOiBzcGVjLmFyZ3MsXG4gICAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uc3BlYy5lbnYgfSxcbiAgICAgICAgc3RkZXJyOiAncGlwZScsXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gY29ubmVjdChuYW1lKSB7XG4gICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICBpZiAoIXNlcnZlcikgcmV0dXJuXG4gICAgc2VydmVyLnN0YXR1cyA9ICdjb25uZWN0aW5nJ1xuICAgIHNlcnZlci5lcnJvciA9IG51bGxcbiAgICBvbkNoYW5nZSgpXG4gICAgdHJ5IHtcbiAgICAgIHNlcnZlci5jb25uZWN0aW9uID0gYXdhaXQgY29ubmVjdE1DUCh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHRyYW5zcG9ydDogYXdhaXQgdHJhbnNwb3J0RmFjdG9yeShzZXJ2ZXIuY29tbWFuZCksXG4gICAgICB9KVxuICAgICAgc2VydmVyLnN0YXR1cyA9ICdjb25uZWN0ZWQnXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXJ2ZXIuc3RhdHVzID0gJ2Vycm9yJ1xuICAgICAgc2VydmVyLmVycm9yID0gU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMzAwKVxuICAgICAgc2VydmVyLmNvbm5lY3Rpb24gPSBudWxsXG4gICAgfVxuICAgIG9uQ2hhbmdlKClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3QobmFtZSkge1xuICAgIGNvbnN0IHNlcnZlciA9IHNlcnZlcnMuZ2V0KG5hbWUpXG4gICAgaWYgKHNlcnZlcj8uY29ubmVjdGlvbikge1xuICAgICAgYXdhaXQgc2VydmVyLmNvbm5lY3Rpb24uY2xvc2UoKS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgIHNlcnZlci5jb25uZWN0aW9uID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29ubmVjdEFsbCgpIHtcbiAgICAgIGNvbnN0IHBlbmRpbmcgPSBbXVxuICAgICAgZm9yIChjb25zdCBzZXJ2ZXIgb2Ygc2VydmVycy52YWx1ZXMoKSkge1xuICAgICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIHBlbmRpbmcucHVzaChjb25uZWN0KHNlcnZlci5uYW1lKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQocGVuZGluZylcbiAgICB9LFxuICAgIGFzeW5jIGFkZChuYW1lLCBjb21tYW5kLCBzY29wZSA9ICdnbG9iYWwnKSB7XG4gICAgICBpZiAoc2NvcGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgICBjb25maWcuc2VydmVyc1tuYW1lXSA9IGNvbW1hbmRcbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgcmVhZFJlZ2lzdHJ5KClcbiAgICAgICAgcmVnaXN0cnkuc2VydmVyc1tuYW1lXSA9IGNvbW1hbmRcbiAgICAgICAgYXdhaXQgd3JpdGVSZWdpc3RyeShyZWdpc3RyeSlcbiAgICAgIH1cbiAgICAgIHNlcnZlcnMuc2V0KG5hbWUsIHsgbmFtZSwgY29tbWFuZCwgc2NvcGUsIGVuYWJsZWQ6IHRydWUsIHN0YXR1czogJ2lkbGUnLCBlcnJvcjogbnVsbCwgY29ubmVjdGlvbjogbnVsbCB9KVxuICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgIH0sXG4gICAgYXN5bmMgcmVtb3ZlKG5hbWUpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gc2VydmVycy5nZXQobmFtZSk/LnNjb3BlXG4gICAgICBpZiAoc2NvcGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgICBkZWxldGUgY29uZmlnLnNlcnZlcnNbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgcmVhZFJlZ2lzdHJ5KClcbiAgICAgICAgZGVsZXRlIHJlZ2lzdHJ5LnNlcnZlcnNbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVSZWdpc3RyeShyZWdpc3RyeSlcbiAgICAgIH1cbiAgICAgIGF3YWl0IGRpc2Nvbm5lY3QobmFtZSlcbiAgICAgIHNlcnZlcnMuZGVsZXRlKG5hbWUpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgfSxcbiAgICBhc3luYyB0b2dnbGUobmFtZSkge1xuICAgICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICAgIGlmICghc2VydmVyKSByZXR1cm5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIHtcbiAgICAgICAgc2VydmVyLmVuYWJsZWQgPSBmYWxzZVxuICAgICAgICBzZXJ2ZXIuc3RhdHVzID0gJ2Rpc2FibGVkJ1xuICAgICAgICBjb25maWcuZGlzYWJsZWRbbmFtZV0gPSB0cnVlXG4gICAgICAgIGF3YWl0IHdyaXRlUHJvamVjdENvbmZpZyhyb290LCBjb25maWcpXG4gICAgICAgIGF3YWl0IGRpc2Nvbm5lY3QobmFtZSlcbiAgICAgICAgb25DaGFuZ2UoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VydmVyLmVuYWJsZWQgPSB0cnVlXG4gICAgICAgIGRlbGV0ZSBjb25maWcuZGlzYWJsZWRbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgICAgfVxuICAgIH0sXG4gICAgcmVjb25uZWN0KG5hbWUpIHtcbiAgICAgIHJldHVybiBkaXNjb25uZWN0KG5hbWUpLnRoZW4oKCkgPT4gY29ubmVjdChuYW1lKSlcbiAgICB9LFxuICAgIGxpc3QoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldLm1hcCgocykgPT4gKHtcbiAgICAgICAgbmFtZTogcy5uYW1lLFxuICAgICAgICBjb21tYW5kOiBzLmNvbW1hbmQsXG4gICAgICAgIHNjb3BlOiBzLnNjb3BlLFxuICAgICAgICBlbmFibGVkOiBzLmVuYWJsZWQsXG4gICAgICAgIHN0YXR1czogcy5zdGF0dXMsXG4gICAgICAgIGVycm9yOiBzLmVycm9yLFxuICAgICAgICB0b29sQ291bnQ6IHMuY29ubmVjdGlvbj8udG9vbHMubGVuZ3RoIHx8IDAsXG4gICAgICAgIHRvb2xzOiAocy5jb25uZWN0aW9uPy50b29scyB8fCBbXSkubWFwKCh0KSA9PiAoeyBuYW1lOiB0Lm5hbWUsIGRlc2NyaXB0aW9uOiB0LmRlc2NyaXB0aW9uIHx8ICcnIH0pKSxcbiAgICAgIH0pKVxuICAgIH0sXG4gICAgdG9vbHMoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldXG4gICAgICAgIC5maWx0ZXIoKHMpID0+IHMuY29ubmVjdGlvbilcbiAgICAgICAgLmZsYXRNYXAoKHMpID0+IHMuY29ubmVjdGlvbi50b29scylcbiAgICB9LFxuICAgIGFzeW5jIGNsb3NlQWxsKCkge1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIHNlcnZlcnMua2V5cygpKSBhd2FpdCBkaXNjb25uZWN0KG5hbWUpXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCByZWFkZGlyLCB3cml0ZUZpbGUsIG1rZGlyIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgcHJvamVjdERpciB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgeyBwYXJzZUZyb250bWF0dGVyIH0gZnJvbSAnLi9za2lsbHMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxNZW1vcnlEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdtZW1vcnknKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdE1lbW9yeURpcihyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdtZW1vcnknKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2x1Z2lmeShuYW1lKSB7XG4gIGNvbnN0IHNsdWcgPSBTdHJpbmcobmFtZSlcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJylcbiAgICAucmVwbGFjZSgvXi0rfC0rJC9nLCAnJylcbiAgICAuc2xpY2UoMCwgNjApXG4gIGlmICghc2x1ZykgdGhyb3cgbmV3IEVycm9yKCdtZW1vcnkgbmFtZSBtdXN0IGNvbnRhaW4gbGV0dGVycyBvciBudW1iZXJzJylcbiAgcmV0dXJuIHNsdWdcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNjb3BlKSB7XG4gIGxldCBuYW1lcyA9IFtdXG4gIHRyeSB7XG4gICAgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3QgbWVtb3JpZXMgPSBbXVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJy5tZCcpKSBjb250aW51ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG1ldGEsIGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoam9pbihkaXIsIGZpbGUpLCAndXRmLTgnKSlcbiAgICAgIG1lbW9yaWVzLnB1c2goe1xuICAgICAgICBuYW1lOiBtZXRhLm5hbWUgfHwgZmlsZS5zbGljZSgwLCAtMyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzY29wZSxcbiAgICAgICAgZmlsZTogam9pbihkaXIsIGZpbGUpLFxuICAgICAgICBib2R5OiBib2R5LnRyaW0oKSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBtZW1vcmllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVtb3J5KHJvb3QpIHtcbiAgY29uc3QgZGlyRm9yID0gKHNjb3BlKSA9PiAoc2NvcGUgPT09ICdnbG9iYWwnID8gZ2xvYmFsTWVtb3J5RGlyKCkgOiBwcm9qZWN0TWVtb3J5RGlyKHJvb3QpKVxuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgbGlzdCgpIHtcbiAgICAgIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsTWVtb3J5RGlyKCksICdnbG9iYWwnKVxuICAgICAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdE1lbW9yeURpcihyb290KSwgJ3Byb2plY3QnKVxuICAgICAgcmV0dXJuIFsuLi5wcm9qZWN0LCAuLi5nbG9iYWxdXG4gICAgfSxcbiAgICBhc3luYyByZW1lbWJlcih7IG5hbWUsIGRlc2NyaXB0aW9uLCBjb250ZW50LCBzY29wZSA9ICdwcm9qZWN0JyB9KSB7XG4gICAgICBpZiAoIVsncHJvamVjdCcsICdnbG9iYWwnXS5pbmNsdWRlcyhzY29wZSkpIHRocm93IG5ldyBFcnJvcignc2NvcGUgbXVzdCBiZSBwcm9qZWN0IG9yIGdsb2JhbCcpXG4gICAgICBjb25zdCBzbHVnID0gc2x1Z2lmeShuYW1lKVxuICAgICAgY29uc3QgZGlyID0gZGlyRm9yKHNjb3BlKVxuICAgICAgYXdhaXQgbWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgY29uc3QgZmlsZSA9IGpvaW4oZGlyLCBgJHtzbHVnfS5tZGApXG4gICAgICBjb25zdCB0ZXh0ID0gYC0tLVxcbm5hbWU6ICR7c2x1Z31cXG5kZXNjcmlwdGlvbjogJHtTdHJpbmcoZGVzY3JpcHRpb24pLnJlcGxhY2UoL1xcbi9nLCAnICcpfVxcbi0tLVxcbiR7Y29udGVudH1cXG5gXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZSwgdGV4dCwgJ3V0Zi04JylcbiAgICAgIHJldHVybiB7IG5hbWU6IHNsdWcsIHNjb3BlLCBmaWxlIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlY2FsbChuYW1lKSB7XG4gICAgICBjb25zdCBtZW1vcmllcyA9IGF3YWl0IHRoaXMubGlzdCgpXG4gICAgICBjb25zdCBtZW1vcnkgPSBtZW1vcmllcy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG5hbWUpXG4gICAgICBpZiAoIW1lbW9yeSkge1xuICAgICAgICBjb25zdCBrbm93biA9IG1lbW9yaWVzLm1hcCgobSkgPT4gbS5uYW1lKS5qb2luKCcsICcpIHx8ICdub25lJ1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIG1lbW9yeSBuYW1lZCBcIiR7bmFtZX1cIjsga25vd24gbWVtb3JpZXM6ICR7a25vd259YClcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG5hbWU6IG1lbW9yeS5uYW1lLCBzY29wZTogbWVtb3J5LnNjb3BlLCBmaWxlOiBtZW1vcnkuZmlsZSwgY29udGVudDogbWVtb3J5LmJvZHkgfVxuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lbW9yeUluZGV4KG1lbW9yaWVzLCByb290KSB7XG4gIGlmIChtZW1vcmllcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gYFlvdSBoYXZlIG5vIHNhdmVkIG1lbW9yaWVzIHlldC4gVGhpcyBpbmRleCBsaXN0cyB0aGVtIHdoZW4geW91IHNhdmUgZHVyYWJsZSBmYWN0cyB3aXRoIHRoZSByZW1lbWJlciB0b29sOyBhbnN3ZXIgcXVlc3Rpb25zIGFib3V0IHlvdXIgbWVtb3JpZXMgZnJvbSB0aGlzIGluZGV4IGFsb25lLCB3aXRob3V0IHNlYXJjaGluZyB0aGUgZmlsZXN5c3RlbS5gXG4gIH1cbiAgY29uc3QgbGluZXMgPSBtZW1vcmllcy5tYXAoKG0pID0+IGAtICR7bS5uYW1lfSAoJHttLnNjb3BlfSk6ICR7bS5kZXNjcmlwdGlvbn1gKVxuICByZXR1cm4gW1xuICAgIGBNZW1vcmllcyB5b3UgaGF2ZSBzYXZlZC4gVGhpcyBpbmRleCBpcyBjb21wbGV0ZTogYW5zd2VyIHF1ZXN0aW9ucyBhYm91dCB5b3VyIG1lbW9yaWVzIGZyb20gaXQgZGlyZWN0bHksIGxvYWQgb25lIHdpdGggdGhlIHJlY2FsbCB0b29sIHdoZW4gaXRzIGNvbnRlbnQgaXMgcmVsZXZhbnQsIGFuZCBuZXZlciBzZWFyY2ggdGhlIGZpbGVzeXN0ZW0gZm9yIG1lbW9yaWVzLiBUaGUgZmlsZXMgbGl2ZSBpbiAke3Byb2plY3RNZW1vcnlEaXIocm9vdCl9IGFuZCAke2dsb2JhbE1lbW9yeURpcigpfSBhbmQgY2FuIGJlIGVkaXRlZCBvciBkZWxldGVkIHdpdGggb3JkaW5hcnkgdG9vbHMgd2hlbiBhc2tlZCB0byBjdXJhdGUgdGhlbS5gLFxuICAgIC4uLmxpbmVzLFxuICBdLmpvaW4oJ1xcbicpXG59XG4iLCAiaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgeyBmaW5kUHJvamVjdFJvb3QgfSBmcm9tICcuL3BhdGhzLmpzJ1xuaW1wb3J0IHsgbG9hZFN0YXJ0dXBDb250ZXh0LCBjcmVhdGVDb250ZXh0VHJhY2tlciB9IGZyb20gJy4vY29udGV4dC5qcydcbmltcG9ydCB7IGNyZWF0ZVNraWxsSW5kZXggfSBmcm9tICcuL3NraWxscy5qcydcbmltcG9ydCB7IGNyZWF0ZUNvbW1hbmRJbmRleCB9IGZyb20gJy4vY29tbWFuZHMuanMnXG5pbXBvcnQgeyBjcmVhdGVNY3BSdW50aW1lIH0gZnJvbSAnLi9tY3AuanMnXG5pbXBvcnQgeyBjcmVhdGVNZW1vcnkgfSBmcm9tICcuL21lbW9yeS5qcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkUHJvamVjdEJvb3QoY3dkLCB7IG9uTWNwQ2hhbmdlID0gKCkgPT4ge30gfSA9IHt9KSB7XG4gIGNvbnN0IGhvbWUgPSBob21lZGlyKClcbiAgY29uc3Qgcm9vdCA9IGZpbmRQcm9qZWN0Um9vdChjd2QpXG4gIGNvbnN0IHN0YXJ0dXBDb250ZXh0ID0gbG9hZFN0YXJ0dXBDb250ZXh0KGN3ZClcbiAgY29uc3QgdHJhY2tlciA9IGNyZWF0ZUNvbnRleHRUcmFja2VyKHtcbiAgICBzdG9wRGlyOiBzdGFydHVwQ29udGV4dC5zdG9wRGlyLFxuICAgIGxvYWRlZDogbmV3IFNldChzdGFydHVwQ29udGV4dC5maWxlcy5tYXAoKGYpID0+IGYucGF0aCkpLFxuICB9KVxuICByZXR1cm4ge1xuICAgIGN3ZCxcbiAgICByb290LFxuICAgIGRpc3BsYXlDd2Q6IGN3ZC5zdGFydHNXaXRoKGhvbWUpID8gY3dkLnJlcGxhY2UoaG9tZSwgJ34nKSA6IGN3ZCxcbiAgICBzdGFydHVwQ29udGV4dCxcbiAgICB0cmFja2VyLFxuICAgIHNraWxsczogYXdhaXQgY3JlYXRlU2tpbGxJbmRleChyb290KSxcbiAgICBjb21tYW5kczogYXdhaXQgY3JlYXRlQ29tbWFuZEluZGV4KHJvb3QpLFxuICAgIG1jcDogYXdhaXQgY3JlYXRlTWNwUnVudGltZSh7IHJvb3QsIG9uQ2hhbmdlOiBvbk1jcENoYW5nZSB9KSxcbiAgICBtZW1vcnk6IGNyZWF0ZU1lbW9yeShyb290KSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5jb25zdCBNQVhfTElORVMgPSAyMDAwXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaGVsbE1hbmFnZXIoeyBvbkNoYW5nZSA9ICgpID0+IHt9LCBvbkV4aXQgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3Qgc2hlbGxzID0gbmV3IE1hcCgpXG4gIGxldCBuZXh0SWQgPSAxXG5cbiAgZnVuY3Rpb24gcHVibGljVmlldyhzaGVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogc2hlbGwuaWQsXG4gICAgICBjb21tYW5kOiBzaGVsbC5jb21tYW5kLFxuICAgICAgY3dkOiBzaGVsbC5jd2QsXG4gICAgICBzdGF0dXM6IHNoZWxsLnN0YXR1cyxcbiAgICAgIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSxcbiAgICAgIHN0YXJ0ZWRBdDogc2hlbGwuc3RhcnRlZEF0LFxuICAgICAgZW5kZWRBdDogc2hlbGwuZW5kZWRBdCxcbiAgICAgIGtpbGxlZEJ5OiBzaGVsbC5raWxsZWRCeSxcbiAgICAgIGxhc3RMaW5lOiBzaGVsbC5saW5lcy5hdCgtMSkgfHwgJycsXG4gICAgICBsaW5lQ291bnQ6IHNoZWxsLmxpbmVzLmxlbmd0aCxcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChjb21tYW5kLCB7IGN3ZCB9ID0ge30pIHtcbiAgICBjb25zdCBpZCA9IFN0cmluZyhuZXh0SWQrKylcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKGNvbW1hbmQsIHtcbiAgICAgIHNoZWxsOiB0cnVlLFxuICAgICAgY3dkOiBjd2QgfHwgcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgRk9SQ0VfQ09MT1I6ICcwJywgTk9fQ09MT1I6ICcxJyB9LFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgIH0pXG4gICAgY29uc3Qgc2hlbGwgPSB7XG4gICAgICBpZCxcbiAgICAgIGNvbW1hbmQsXG4gICAgICBjd2Q6IGN3ZCB8fCBwcm9jZXNzLmN3ZCgpLFxuICAgICAgY2hpbGQsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgIGV4aXRDb2RlOiBudWxsLFxuICAgICAgc3RhcnRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgZW5kZWRBdDogbnVsbCxcbiAgICAgIGtpbGxlZEJ5OiBudWxsLFxuICAgICAgbGluZXM6IFtdLFxuICAgICAgcGFydGlhbDogJycsXG4gICAgfVxuXG4gICAgY29uc3QgcHVzaCA9IChjaHVuaykgPT4ge1xuICAgICAgY29uc3QgdGV4dCA9IHNoZWxsLnBhcnRpYWwgKyBjaHVuay50b1N0cmluZygpXG4gICAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpXG4gICAgICBzaGVsbC5wYXJ0aWFsID0gbGluZXMucG9wKCkgfHwgJydcbiAgICAgIHNoZWxsLmxpbmVzLnB1c2goLi4ubGluZXMpXG4gICAgICBpZiAoc2hlbGwubGluZXMubGVuZ3RoID4gTUFYX0xJTkVTKSBzaGVsbC5saW5lcy5zcGxpY2UoMCwgc2hlbGwubGluZXMubGVuZ3RoIC0gTUFYX0xJTkVTKVxuICAgICAgb25DaGFuZ2UoKVxuICAgIH1cbiAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBwdXNoKVxuICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIHB1c2gpXG4gICAgY2hpbGQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgcHVzaChgW2ZhaWxlZCB0byBzdGFydDogJHtlcnIubWVzc2FnZX1dXFxuYClcbiAgICB9KVxuICAgIGNoaWxkLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgaWYgKHNoZWxsLnBhcnRpYWwpIHtcbiAgICAgICAgc2hlbGwubGluZXMucHVzaChzaGVsbC5wYXJ0aWFsKVxuICAgICAgICBzaGVsbC5wYXJ0aWFsID0gJydcbiAgICAgIH1cbiAgICAgIHNoZWxsLnN0YXR1cyA9ICdleGl0ZWQnXG4gICAgICBzaGVsbC5leGl0Q29kZSA9IGNvZGUgPz8gKHNpZ25hbCA/IDEgOiAwKVxuICAgICAgc2hlbGwuZW5kZWRBdCA9IERhdGUubm93KClcbiAgICAgIG9uQ2hhbmdlKClcbiAgICAgIG9uRXhpdChwdWJsaWNWaWV3KHNoZWxsKSlcbiAgICB9KVxuXG4gICAgc2hlbGxzLnNldChpZCwgc2hlbGwpXG4gICAgb25DaGFuZ2UoKVxuICAgIHJldHVybiB7IGlkIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldChpZCkge1xuICAgIGNvbnN0IHNoZWxsID0gc2hlbGxzLmdldChTdHJpbmcoaWQpKVxuICAgIGlmICghc2hlbGwpIHRocm93IG5ldyBFcnJvcihgbm8gc2hlbGwgd2l0aCBpZCAke2lkfTsgaXQgaXMgZ29uZSBhbmQgY2Fubm90IGJlIGluc3BlY3RlZCAoZXhpdGVkIHNoZWxscyBkaXNhcHBlYXIgd2hlbiBkaXNtaXNzZWQpYClcbiAgICByZXR1cm4gc2hlbGxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhcnQsXG4gICAgb3V0cHV0KGlkLCB7IHRhaWwgPSAxMDAgfSA9IHt9KSB7XG4gICAgICBjb25zdCBzaGVsbCA9IGdldChpZClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBzaGVsbC5pZCxcbiAgICAgICAgY29tbWFuZDogc2hlbGwuY29tbWFuZCxcbiAgICAgICAgc3RhdHVzOiBzaGVsbC5zdGF0dXMsXG4gICAgICAgIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSxcbiAgICAgICAgb3V0cHV0OiBzaGVsbC5saW5lcy5zbGljZSgtdGFpbCkuam9pbignXFxuJyksXG4gICAgICAgIHRvdGFsTGluZXM6IHNoZWxsLmxpbmVzLmxlbmd0aCxcbiAgICAgIH1cbiAgICB9LFxuICAgIGtpbGwoaWQsIGJ5ID0gJ21vZGVsJykge1xuICAgICAgY29uc3Qgc2hlbGwgPSBnZXQoaWQpXG4gICAgICBpZiAoc2hlbGwuc3RhdHVzICE9PSAncnVubmluZycpIHJldHVybiB7IGlkOiBzaGVsbC5pZCwgc3RhdHVzOiBzaGVsbC5zdGF0dXMsIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSB9XG4gICAgICBzaGVsbC5raWxsZWRCeSA9IGJ5XG4gICAgICBzaGVsbC5jaGlsZC5raWxsKCdTSUdURVJNJylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoc2hlbGwuc3RhdHVzID09PSAncnVubmluZycpIHNoZWxsLmNoaWxkLmtpbGwoJ1NJR0tJTEwnKVxuICAgICAgfSwgMzAwMCkudW5yZWYoKVxuICAgICAgcmV0dXJuIHsgaWQ6IHNoZWxsLmlkLCBzdGF0dXM6ICdraWxsaW5nJyB9XG4gICAgfSxcbiAgICBkaXNtaXNzKGlkKSB7XG4gICAgICBjb25zdCBzaGVsbCA9IHNoZWxscy5nZXQoU3RyaW5nKGlkKSlcbiAgICAgIGlmIChzaGVsbCAmJiBzaGVsbC5zdGF0dXMgPT09ICdleGl0ZWQnKSB7XG4gICAgICAgIHNoZWxscy5kZWxldGUoU3RyaW5nKGlkKSlcbiAgICAgICAgb25DaGFuZ2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgbGlzdCgpIHtcbiAgICAgIHJldHVybiBbLi4uc2hlbGxzLnZhbHVlcygpXS5tYXAocHVibGljVmlldylcbiAgICB9LFxuICAgIHJ1bm5pbmcoKSB7XG4gICAgICByZXR1cm4gWy4uLnNoZWxscy52YWx1ZXMoKV0uZmlsdGVyKChzKSA9PiBzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKS5sZW5ndGhcbiAgICB9LFxuICAgIGtpbGxBbGwoKSB7XG4gICAgICBmb3IgKGNvbnN0IHNoZWxsIG9mIHNoZWxscy52YWx1ZXMoKSkge1xuICAgICAgICBpZiAoc2hlbGwuc3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgICAgICBzaGVsbC5raWxsZWRCeSA9ICd1c2VyJ1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzaGVsbC5jaGlsZC5raWxsKCdTSUdLSUxMJylcbiAgICAgICAgICB9IGNhdGNoIHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ25vZGU6Y3J5cHRvJ1xuXG5leHBvcnQgY29uc3QgU0VTU0lPTl9WRVJTSU9OID0gMVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUV2ZW50KHR5cGUsIGRhdGEgPSB7fSkge1xuICByZXR1cm4geyBpZDogcmFuZG9tVVVJRCgpLCBhdDogRGF0ZS5ub3coKSwgdHlwZSwgZGF0YSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlSGVhZGVyKHsgY3dkLCByb290IH0pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnc2Vzc2lvbicsXG4gICAgdmVyc2lvbjogU0VTU0lPTl9WRVJTSU9OLFxuICAgIGlkOiByYW5kb21VVUlEKCksXG4gICAgY3dkLFxuICAgIHJvb3QsXG4gICAgY3JlYXRlZEF0OiBEYXRlLm5vdygpLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVMaW5lKGV2ZW50KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShldmVudCkgKyAnXFxuJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VMaW5lKGxpbmUpIHtcbiAgY29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpXG4gIGlmICghdHJpbW1lZCkgcmV0dXJuIG51bGxcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHRyaW1tZWQpXG4gICAgcmV0dXJuIHBhcnNlZCAmJiB0eXBlb2YgcGFyc2VkLnR5cGUgPT09ICdzdHJpbmcnID8gcGFyc2VkIDogbnVsbFxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmVzKHRleHQpIHtcbiAgcmV0dXJuIHRleHQuc3BsaXQoJ1xcbicpLm1hcChwYXJzZUxpbmUpLmZpbHRlcihCb29sZWFuKVxufVxuIiwgImltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlLCByZWFkZGlyLCBzdGF0LCB1bmxpbmsgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBzZXNzaW9uc0RpciwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IG1ha2VIZWFkZXIsIHNlcmlhbGl6ZUxpbmUsIHBhcnNlTGluZXMsIHBhcnNlTGluZSB9IGZyb20gJy4vZXZlbnRzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbih7IGN3ZCwgcm9vdCB9KSB7XG4gIGNvbnN0IGhlYWRlciA9IG1ha2VIZWFkZXIoeyBjd2QsIHJvb3QgfSlcbiAgY29uc3QgZmlsZSA9IGpvaW4oZW5zdXJlRGlyKHNlc3Npb25zRGlyKHJvb3QpKSwgYCR7aGVhZGVyLmlkfS5qc29ubGApXG4gIGNvbnN0IHNlc3Npb24gPSBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KVxuICBzZXNzaW9uLmFwcGVuZChoZWFkZXIpXG4gIHJldHVybiBzZXNzaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KSB7XG4gIGxldCBxdWV1ZSA9IFByb21pc2UucmVzb2x2ZSgpXG4gIHJldHVybiB7XG4gICAgaWQ6IGhlYWRlci5pZCxcbiAgICBmaWxlLFxuICAgIGhlYWRlcixcbiAgICBhcHBlbmQoZXZlbnQpIHtcbiAgICAgIHF1ZXVlID0gcXVldWUudGhlbigoKSA9PiBhcHBlbmRGaWxlKGZpbGUsIHNlcmlhbGl6ZUxpbmUoZXZlbnQpKSlcbiAgICAgIHJldHVybiBxdWV1ZVxuICAgIH0sXG4gICAgZmx1c2goKSB7XG4gICAgICByZXR1cm4gcXVldWVcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU2Vzc2lvbihmaWxlKSB7XG4gIGNvbnN0IGV2ZW50cyA9IHBhcnNlTGluZXMoYXdhaXQgcmVhZEZpbGUoZmlsZSwgJ3V0Zi04JykpXG4gIGNvbnN0IGhlYWRlciA9IGV2ZW50c1swXT8udHlwZSA9PT0gJ3Nlc3Npb24nID8gZXZlbnRzLnNoaWZ0KCkgOiBudWxsXG4gIGlmICghaGVhZGVyKSB0aHJvdyBuZXcgRXJyb3IoYG5vdCBhIHBpY28gc2Vzc2lvbiBmaWxlOiAke2ZpbGV9YClcbiAgcmV0dXJuIHsgaGVhZGVyLCBldmVudHMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZXNzaW9uTWV0YShmaWxlKSB7XG4gIGNvbnN0IFtpbmZvLCBoYW5kbGVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW3N0YXQoZmlsZSksIHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpXSlcbiAgY29uc3QgbGluZXMgPSBoYW5kbGUuc3BsaXQoJ1xcbicpXG4gIGNvbnN0IGhlYWRlciA9IHBhcnNlTGluZShsaW5lc1swXSlcbiAgaWYgKCFoZWFkZXIgfHwgaGVhZGVyLnR5cGUgIT09ICdzZXNzaW9uJykgcmV0dXJuIG51bGxcbiAgbGV0IHRpdGxlID0gbnVsbFxuICBsZXQgY29sb3IgPSBudWxsXG4gIGxldCB0dXJucyA9IDBcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzLnNsaWNlKDEpKSB7XG4gICAgY29uc3QgZXZlbnQgPSBwYXJzZUxpbmUobGluZSlcbiAgICBpZiAoIWV2ZW50KSBjb250aW51ZVxuICAgIGlmIChldmVudC50eXBlID09PSAndGl0bGUnKSB0aXRsZSA9IGV2ZW50LmRhdGEudGV4dFxuICAgIGlmIChldmVudC50eXBlID09PSAnY29sb3InKSBjb2xvciA9IGV2ZW50LmRhdGEudmFsdWVcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21lc3NhZ2UnICYmIGV2ZW50LmRhdGEubWVzc2FnZT8ucm9sZSA9PT0gJ3VzZXInKSB7XG4gICAgICB0dXJucysrXG4gICAgICBjb25zdCBjb250ZW50ID0gZXZlbnQuZGF0YS5tZXNzYWdlLmNvbnRlbnRcbiAgICAgIGNvbnN0IHRleHQgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpXG4gICAgICAgID8gY29udGVudC5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gJ3RleHQnKS5tYXAoKHApID0+IHAudGV4dCkuam9pbignICcpXG4gICAgICAgIDogU3RyaW5nKGNvbnRlbnQpXG4gICAgICBpZiAoIXRpdGxlICYmIHRleHQudHJpbSgpKSB0aXRsZSA9IHRleHQudHJpbSgpLnNsaWNlKDAsIDIwMClcbiAgICB9XG4gIH1cbiAgaWYgKCF0aXRsZSkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIHsgZmlsZSwgaGVhZGVyLCB0aXRsZSwgY29sb3IsIHR1cm5zLCBhdDogaW5mby5tdGltZU1zIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbGlzdERpcihkaXIpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyKVxuICAgIHJldHVybiBuYW1lcy5maWx0ZXIoKG4pID0+IG4uZW5kc1dpdGgoJy5qc29ubCcpKS5tYXAoKG4pID0+IGpvaW4oZGlyLCBuKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVNlc3Npb24oZmlsZSkge1xuICByZXR1cm4gdW5saW5rKGZpbGUpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2Vzc2lvbnMoeyBzY29wZSwgcm9vdCB9KSB7XG4gIGxldCBmaWxlcyA9IFtdXG4gIGlmIChzY29wZSA9PT0gJ2V2ZXJ5d2hlcmUnKSB7XG4gICAgY29uc3QgcHJvamVjdHNEaXIgPSBqb2luKHBpY29Ib21lKCksICdwcm9qZWN0cycpXG4gICAgbGV0IHByb2plY3RzID0gW11cbiAgICB0cnkge1xuICAgICAgcHJvamVjdHMgPSBhd2FpdCByZWFkZGlyKHByb2plY3RzRGlyKVxuICAgIH0gY2F0Y2gge31cbiAgICBjb25zdCBuZXN0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHByb2plY3RzLm1hcCgocCkgPT4gbGlzdERpcihqb2luKHByb2plY3RzRGlyLCBwLCAnc2Vzc2lvbnMnKSkpLFxuICAgIClcbiAgICBmaWxlcyA9IG5lc3RlZC5mbGF0KClcbiAgfSBlbHNlIHtcbiAgICBmaWxlcyA9IGF3YWl0IGxpc3REaXIoc2Vzc2lvbnNEaXIocm9vdCkpXG4gIH1cbiAgY29uc3QgbWV0YXMgPSBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAoKGYpID0+IHNlc3Npb25NZXRhKGYpLmNhdGNoKCgpID0+IG51bGwpKSlcbiAgcmV0dXJuIG1ldGFzLmZpbHRlcihCb29sZWFuKS5zb3J0KChhLCBiKSA9PiBiLmF0IC0gYS5hdClcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gY29tcGFjdGlvblByb21wdChjdXN0b21JbnN0cnVjdGlvbnMgPSAnJykge1xuICBsZXQgcHJvbXB0ID0gYFlvdXIgdGFzayBpcyB0byBjcmVhdGUgYSBkZXRhaWxlZCBzdW1tYXJ5IG9mIHRoZSBjb252ZXJzYXRpb24gc28gZmFyLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSB1c2VyJ3MgZXhwbGljaXQgcmVxdWVzdHMgYW5kIHlvdXIgcHJldmlvdXMgYWN0aW9ucy4gVGhlIHN1bW1hcnkgbXVzdCBsZXQgd29yayBjb250aW51ZSBzZWFtbGVzc2x5IHdpdGhvdXQgdGhlIG9yaWdpbmFsIG1lc3NhZ2VzLlxuXG5CZWZvcmUgd3JpdGluZyB0aGUgc3VtbWFyeSwgZHJhZnQgeW91ciBhbmFseXNpcyBpbnNpZGUgPGFuYWx5c2lzPiB0YWdzIChpdCB3aWxsIGJlIGRpc2NhcmRlZCk6IGNocm9ub2xvZ2ljYWxseSByZS1yZWFkIHRoZSBjb252ZXJzYXRpb24gYW5kIG5vdGUgdGhlIHVzZXIncyBleHBsaWNpdCByZXF1ZXN0cyBhbmQgaW50ZW50cywgeW91ciBhcHByb2FjaCwga2V5IGRlY2lzaW9ucywgZmlsZSBuYW1lcyBhbmQgY29kZSwgZXJyb3JzIGFuZCBob3cgdGhleSB3ZXJlIGZpeGVkLCBhbmQgYW55IHVzZXIgZmVlZGJhY2sgb3IgY29ycmVjdGlvbnMsIGVzcGVjaWFsbHkgd2hlcmUgdGhlIHVzZXIgdG9sZCB5b3UgdG8gZG8gc29tZXRoaW5nIGRpZmZlcmVudGx5LlxuXG5UaGVuIHByb2R1Y2UgYSA8c3VtbWFyeT4gYmxvY2sgd2l0aCBleGFjdGx5IHRoZXNlIHNlY3Rpb25zOlxuXG4xLiBQcmltYXJ5IFJlcXVlc3QgYW5kIEludGVudDogYWxsIG9mIHRoZSB1c2VyJ3MgZXhwbGljaXQgcmVxdWVzdHMsIGluIGRldGFpbFxuMi4gS2V5IFRlY2huaWNhbCBDb25jZXB0czogdGVjaG5vbG9naWVzLCBwYXR0ZXJucywgYW5kIGRlY2lzaW9ucyBpbiBwbGF5XG4zLiBGaWxlcyBhbmQgQ29kZSBTZWN0aW9uczogZmlsZXMgZXhhbWluZWQsIG1vZGlmaWVkLCBvciBjcmVhdGVkOyB3aHkgZWFjaCBtYXR0ZXJzOyBpbXBvcnRhbnQgc25pcHBldHMgdmVyYmF0aW1cbjQuIEVycm9ycyBhbmQgRml4ZXM6IGV2ZXJ5IGVycm9yIGhpdCBhbmQgaG93IGl0IHdhcyBmaXhlZCwgaW5jbHVkaW5nIHVzZXIgZmVlZGJhY2sgYWJvdXQgaXRcbjUuIEFsbCBVc2VyIE1lc3NhZ2VzOiBldmVyeSBub24tdG9vbC1yZXN1bHQgdXNlciBtZXNzYWdlLCBzbyBpbnRlbnQgYW5kIGl0cyBjaGFuZ2VzIHN1cnZpdmVcbjYuIFBlbmRpbmcgVGFza3M6IGFueXRoaW5nIGV4cGxpY2l0bHkgcmVxdWVzdGVkIGFuZCBub3QgeWV0IGRvbmVcbjcuIEN1cnJlbnQgV29yazogcHJlY2lzZWx5IHdoYXQgd2FzIGluIHByb2dyZXNzIGp1c3Qgbm93LCB3aXRoIGZpbGUgbmFtZXMgYW5kIGRpcmVjdCBxdW90ZXNcbjguIE5leHQgU3RlcDogb25seSBpZiBkaXJlY3RseSBpbiBsaW5lIHdpdGggdGhlIG1vc3QgcmVjZW50IGV4cGxpY2l0IHJlcXVlc3Q7IGluY2x1ZGUgdmVyYmF0aW0gcXVvdGVzIHNob3dpbmcgZXhhY3RseSB3aGVyZSB3b3JrIGxlZnQgb2ZmLCBvciBzdGF0ZSB0aGF0IHRoZXJlIGlzIG5vbmVcblxuVGhpcyBzdW1tYXJpemF0aW9uIHJlcXVlc3QgaXMgbm90IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbjogZG8gbm90IGxpc3QgaXQgYXMgYSB1c2VyIG1lc3NhZ2UsIGNvdW50IGl0IGFzIGEgdGFzaywgb3IgbGV0IGl0IGFwcGVhciBhcyB0aGUgY3VycmVudCB3b3JrIG9yIG5leHQgc3RlcC4gU3VtbWFyaXplIG9ubHkgd2hhdCBjYW1lIGJlZm9yZSBpdC5cblxuUmVzcG9uZCB3aXRoIHBsYWluIHRleHQgb25seTogb25lIDxhbmFseXNpcz4gYmxvY2sgZm9sbG93ZWQgYnkgb25lIDxzdW1tYXJ5PiBibG9jay5gXG5cbiAgaWYgKGN1c3RvbUluc3RydWN0aW9ucy50cmltKCkpIHtcbiAgICBwcm9tcHQgKz0gYFxcblxcbkFkZGl0aW9uYWwgaW5zdHJ1Y3Rpb25zOlxcbiR7Y3VzdG9tSW5zdHJ1Y3Rpb25zLnRyaW0oKX1gXG4gIH1cbiAgcmV0dXJuIHByb21wdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Q29tcGFjdFN1bW1hcnkocmF3KSB7XG4gIGxldCBmb3JtYXR0ZWQgPSByYXcucmVwbGFjZSgvPGFuYWx5c2lzPltcXHNcXFNdKj88XFwvYW5hbHlzaXM+LywgJycpXG4gIGNvbnN0IG1hdGNoID0gZm9ybWF0dGVkLm1hdGNoKC88c3VtbWFyeT4oW1xcc1xcU10qPyk8XFwvc3VtbWFyeT4vKVxuICBpZiAobWF0Y2gpIGZvcm1hdHRlZCA9IG1hdGNoWzFdXG4gIHJldHVybiBmb3JtYXR0ZWQucmVwbGFjZSgvXFxuXFxuKy9nLCAnXFxuXFxuJykudHJpbSgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250aW51YXRpb25NZXNzYWdlKHN1bW1hcnksIHsgc2Vzc2lvbkZpbGUsIHJlY2VudEtlcHQgfSA9IHt9KSB7XG4gIGxldCB0ZXh0ID0gYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSBUaGUgZWFybGllciBwb3J0aW9uIG9mIHRoaXMgY29udmVyc2F0aW9uIHdhcyBjb21wYWN0ZWQgdG8gZnJlZSBjb250ZXh0LiBTdW1tYXJ5IG9mIHdoYXQgY2FtZSBiZWZvcmU6XFxuXFxuJHtzdW1tYXJ5fWBcbiAgaWYgKHNlc3Npb25GaWxlKSB7XG4gICAgdGV4dCArPSBgXFxuXFxuVGhlIGNvbXBsZXRlIHByZS1jb21wYWN0aW9uIGhpc3RvcnkgaXMgcHJlc2VydmVkIGF0ICR7c2Vzc2lvbkZpbGV9IChqc29ubCwgb25lIGV2ZW50IHBlciBsaW5lKS4gSWYgeW91IG5lZWQgZXhhY3QgZGV0YWlscyBmcm9tIGJlZm9yZSBjb21wYWN0aW9uLCBzdWNoIGFzIGNvZGUgeW91IGdlbmVyYXRlZCBvciBwcmVjaXNlIGVycm9yIHRleHQsIHJlYWQgdGhhdCBmaWxlIHdpdGggeW91ciB0b29scy5gXG4gIH1cbiAgaWYgKHJlY2VudEtlcHQpIHtcbiAgICB0ZXh0ICs9IGBcXG5cXG5UaGUgbW9zdCByZWNlbnQgbWVzc2FnZXMgZm9sbG93IHZlcmJhdGltLmBcbiAgfVxuICB0ZXh0ICs9IGBcXG5cXG5Db250aW51ZSBleGFjdGx5IHdoZXJlIHRoaW5ncyBsZWZ0IG9mZi4gRG8gbm90IHJlY2FwLCBhY2tub3dsZWRnZSB0aGlzIHN1bW1hcnksIG9yIHJlLWFzayBzZXR0bGVkIHF1ZXN0aW9ucy5gXG4gIHJldHVybiB0ZXh0XG59XG4iLCAiaW1wb3J0IHsgY29udGludWF0aW9uTWVzc2FnZSB9IGZyb20gJy4vY29tcGFjdGlvbi5qcydcblxuY29uc3QgRFJPUFBJTkdfTU9ERVMgPSBbJ2JvdGgnLCAnY2hhdCcsICdzdW1tYXJ5J11cblxuZnVuY3Rpb24gYWN0aXZlUmV3aW5kcyhldmVudHMpIHtcbiAgY29uc3QgY2FuY2VsZWQgPSBuZXcgU2V0KClcbiAgZm9yIChjb25zdCBlIG9mIGV2ZW50cykge1xuICAgIGlmIChlLnR5cGUgPT09ICdyZXdpbmRfdW5kbycpIGNhbmNlbGVkLmFkZChlLmRhdGEucmV3aW5kSWQpXG4gIH1cbiAgcmV0dXJuIGV2ZW50cy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ3Jld2luZCcgJiYgIWNhbmNlbGVkLmhhcyhlLmlkKSlcbn1cblxuZnVuY3Rpb24gZHJvcHBlZElkcyhldmVudHMpIHtcbiAgY29uc3QgZHJvcHBlZCA9IG5ldyBTZXQoKVxuICBjb25zdCBpbmRleCA9IG5ldyBNYXAoZXZlbnRzLm1hcCgoZSwgaSkgPT4gW2UuaWQsIGldKSlcbiAgZm9yIChjb25zdCByZXdpbmQgb2YgYWN0aXZlUmV3aW5kcyhldmVudHMpKSB7XG4gICAgaWYgKCFEUk9QUElOR19NT0RFUy5pbmNsdWRlcyhyZXdpbmQuZGF0YS5tb2RlKSkgY29udGludWVcbiAgICBjb25zdCBmcm9tID0gaW5kZXguZ2V0KHJld2luZC5kYXRhLnRhcmdldClcbiAgICBjb25zdCB0byA9IGluZGV4LmdldChyZXdpbmQuaWQpXG4gICAgaWYgKGZyb20gPT09IHVuZGVmaW5lZCB8fCB0byA9PT0gdW5kZWZpbmVkKSBjb250aW51ZVxuICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDwgdG87IGkrKykgZHJvcHBlZC5hZGQoZXZlbnRzW2ldLmlkKVxuICB9XG4gIHJldHVybiBkcm9wcGVkXG59XG5cbmZ1bmN0aW9uIGFkZFVzYWdlSW50byh0b3RhbCwgdXNhZ2UpIHtcbiAgdG90YWwucHJvbXB0VG9rZW5zICs9IHVzYWdlLnByb21wdFRva2VucyB8fCAwXG4gIHRvdGFsLmNvbXBsZXRpb25Ub2tlbnMgKz0gdXNhZ2UuY29tcGxldGlvblRva2VucyB8fCAwXG4gIHRvdGFsLnRvdGFsVG9rZW5zICs9IHVzYWdlLnRvdGFsVG9rZW5zIHx8IDBcbiAgdG90YWwuY2FjaGVkVG9rZW5zICs9IHVzYWdlLmNhY2hlZFRva2VucyB8fCAwXG4gIHRvdGFsLnRob3VnaHRUb2tlbnMgKz0gdXNhZ2UudGhvdWdodFRva2VucyB8fCAwXG59XG5cbmZ1bmN0aW9uIGVtcHR5VXNhZ2UoKSB7XG4gIHJldHVybiB7IHByb21wdFRva2VuczogMCwgY29tcGxldGlvblRva2VuczogMCwgdG90YWxUb2tlbnM6IDAsIGNhY2hlZFRva2VuczogMCwgdGhvdWdodFRva2VuczogMCB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhyYXcpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyYXcpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IF9yYXc6IHJhdyB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaEhpc3Rvcnkoc3RhdGUsIG1lc3NhZ2UsIGV2ZW50SWQpIHtcbiAgc3RhdGUucHJvdmlkZXJIaXN0b3J5LnB1c2gobWVzc2FnZSlcbiAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzLnB1c2goZXZlbnRJZClcbn1cblxuZnVuY3Rpb24gZm9sZE1lc3NhZ2Uoc3RhdGUsIGV2ZW50KSB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2VcbiAgaWYgKCFtZXNzYWdlIHx8IG1lc3NhZ2Uucm9sZSA9PT0gJ3N5c3RlbScpIHJldHVyblxuICBwdXNoSGlzdG9yeShzdGF0ZSwgbWVzc2FnZSwgZXZlbnQuaWQpXG5cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInKSB7XG4gICAgY29uc3QgdGV4dCA9IEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KVxuICAgICAgPyBtZXNzYWdlLmNvbnRlbnRcbiAgICAgICAgICAubWFwKChwKSA9PiAocC50eXBlID09PSAndGV4dCcgPyBwLnRleHQgOiBgW2ltYWdlOiAke1N0cmluZyhwLnNvdXJjZT8ucGF0aCB8fCAnJykuc3BsaXQoJy8nKS5wb3AoKSB8fCAnYXR0YWNoZWQnfV1gKSlcbiAgICAgICAgICAuam9pbignJylcbiAgICAgIDogU3RyaW5nKG1lc3NhZ2UuY29udGVudClcbiAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAndXNlcicsIHRleHQsIGNvbnRlbnQ6IG1lc3NhZ2UuY29udGVudCwgZXZlbnRJZDogZXZlbnQuaWQgfSlcbiAgICByZXR1cm5cbiAgfVxuICBpZiAobWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgIGlmIChtZXNzYWdlLmNvbnRlbnQpIHtcbiAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0OiBtZXNzYWdlLmNvbnRlbnQsIG1vZGVsOiBzdGF0ZS5tb2RlbCB9KVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNhbGwgb2YgbWVzc2FnZS50b29sX2NhbGxzIHx8IFtdKSB7XG4gICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICBraW5kOiAndG9vbCcsXG4gICAgICAgIGNhbGxJZDogY2FsbC5pZCxcbiAgICAgICAgbmFtZTogY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBhcmdzOiBwYXJzZUFyZ3MoY2FsbC5mdW5jdGlvbi5hcmd1bWVudHMpLFxuICAgICAgICB0aXRsZTogY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBzdGF0dXM6ICdkb25lJyxcbiAgICAgICAgZXZlbnRJZDogZXZlbnQuaWQsXG4gICAgICB9XG4gICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goaXRlbSlcbiAgICAgIHN0YXRlLnRvb2xJdGVtcy5zZXQoY2FsbC5pZCwgaXRlbSlcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3Rvb2wnKSB7XG4gICAgY29uc3QgaXRlbSA9IHN0YXRlLnRvb2xJdGVtcy5nZXQobWVzc2FnZS50b29sX2NhbGxfaWQpXG4gICAgaWYgKGl0ZW0pIGl0ZW0ucmVzdWx0VGV4dCA9IFN0cmluZyhtZXNzYWdlLmNvbnRlbnQpXG4gIH1cbn1cblxuZnVuY3Rpb24gZm9sZFJld2luZChzdGF0ZSwgZXZlbnQpIHtcbiAgY29uc3QgeyBtb2RlLCBzdW1tYXJ5VGV4dCwgcmV2ZXJ0ZWQgPSBbXSB9ID0gZXZlbnQuZGF0YVxuICBmb3IgKGNvbnN0IGNhbGxJZCBvZiByZXZlcnRlZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KGNhbGxJZClcbiAgICBpZiAoaXRlbSkgaXRlbS5zdGF0dXMgPSAncmV2ZXJ0ZWQnXG4gIH1cbiAgaWYgKG1vZGUgPT09ICdzdW1tYXJ5JyAmJiBzdW1tYXJ5VGV4dCkge1xuICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdzdW1tYXJ5Jywgc291cmNlOiAncmV3aW5kJywgdGV4dDogc3VtbWFyeVRleHQgfSlcbiAgICBwdXNoSGlzdG9yeShzdGF0ZSwge1xuICAgICAgcm9sZTogJ2Fzc2lzdGFudCcsXG4gICAgICBjb250ZW50OiBgW3N1bW1hcnkgb2YgdGhlIHJld291bmQgY29udmVyc2F0aW9uXVxcbiR7c3VtbWFyeVRleHR9YCxcbiAgICB9LCBldmVudC5pZClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlU3RhdGUoZXZlbnRzKSB7XG4gIGNvbnN0IGRyb3BwZWQgPSBkcm9wcGVkSWRzKGV2ZW50cylcbiAgY29uc3QgY2FuY2VsZWRVbmRvVGFyZ2V0cyA9IG5ldyBTZXQoXG4gICAgZXZlbnRzLmZpbHRlcigoZSkgPT4gZS50eXBlID09PSAncmV3aW5kX3VuZG8nKS5tYXAoKGUpID0+IGUuZGF0YS5yZXdpbmRJZCksXG4gIClcblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICB0cmFuc2NyaXB0OiBbXSxcbiAgICBwcm92aWRlckhpc3Rvcnk6IFtdLFxuICAgIGhpc3RvcnlFdmVudElkczogW10sXG4gICAgbW9kZWw6IG51bGwsXG4gICAgZWZmb3J0OiB1bmRlZmluZWQsXG4gICAgdXNhZ2U6IGVtcHR5VXNhZ2UoKSxcbiAgICB1c2FnZUJ5TW9kZWw6IHt9LFxuICAgIHVzYWdlQWN0aXZlOiBlbXB0eVVzYWdlKCksXG4gICAgdXNhZ2VBY3RpdmVCeU1vZGVsOiB7fSxcbiAgICBsYXN0UHJvbXB0VG9rZW5zOiAwLFxuICAgIGxhc3RQcm9tcHRNb2RlbDogbnVsbCxcbiAgICBsb2FkZWRDb250ZXh0OiBuZXcgU2V0KCksXG4gICAgdG9vbEl0ZW1zOiBuZXcgTWFwKCksXG4gIH1cblxuICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgIGlmIChldmVudC50eXBlID09PSAndXNhZ2UnKSB7XG4gICAgICBhZGRVc2FnZUludG8oc3RhdGUudXNhZ2UsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICBjb25zdCBieU1vZGVsID0gKHN0YXRlLnVzYWdlQnlNb2RlbFtldmVudC5kYXRhLm1vZGVsXSB8fD0gZW1wdHlVc2FnZSgpKVxuICAgICAgYWRkVXNhZ2VJbnRvKGJ5TW9kZWwsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICBpZiAoIWRyb3BwZWQuaGFzKGV2ZW50LmlkKSkge1xuICAgICAgICBhZGRVc2FnZUludG8oc3RhdGUudXNhZ2VBY3RpdmUsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICAgIGNvbnN0IGFjdGl2ZUJ5TW9kZWwgPSAoc3RhdGUudXNhZ2VBY3RpdmVCeU1vZGVsW2V2ZW50LmRhdGEubW9kZWxdIHx8PSBlbXB0eVVzYWdlKCkpXG4gICAgICAgIGFkZFVzYWdlSW50byhhY3RpdmVCeU1vZGVsLCBldmVudC5kYXRhLnVzYWdlKVxuICAgICAgICAvLyBvbmx5IGV2ZW50cyB0aGF0IHJlY29yZGVkIHRoZSBmaW5hbCByZXF1ZXN0J3Mgc2l6ZSBjYW4gZHJpdmUgdGhlXG4gICAgICAgIC8vIGNvbnRleHQgbWV0ZXI7IG9sZGVyIGN1bXVsYXRpdmUtb25seSBldmVudHMgd291bGQgb3ZlcnN0YXRlIGl0XG4gICAgICAgIGlmIChldmVudC5kYXRhLmxhc3RQcm9tcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgPSBldmVudC5kYXRhLmxhc3RQcm9tcHRcbiAgICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0TW9kZWwgPSBldmVudC5kYXRhLm1vZGVsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChkcm9wcGVkLmhhcyhldmVudC5pZCkpIGNvbnRpbnVlXG5cbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICBmb2xkTWVzc2FnZShzdGF0ZSwgZXZlbnQpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0b29sX21ldGEnOiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KGV2ZW50LmRhdGEuY2FsbElkKVxuICAgICAgICBpZiAoaXRlbSkgT2JqZWN0LmFzc2lnbihpdGVtLCBldmVudC5kYXRhLCB7IGtpbmQ6ICd0b29sJywgY2FsbElkOiBpdGVtLmNhbGxJZCB9KVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnaW50ZXJydXB0Jzoge1xuICAgICAgICBjb25zdCBsYXN0ID0gc3RhdGUudHJhbnNjcmlwdC5hdCgtMSlcbiAgICAgICAgaWYgKGxhc3Q/LmtpbmQgPT09ICdhc3Npc3RhbnQnKSBsYXN0LmludGVycnVwdGVkID0gdHJ1ZVxuICAgICAgICBpZiAobGFzdD8ua2luZCA9PT0gJ3Rvb2wnICYmIGxhc3Quc3RhdHVzID09PSAncnVubmluZycpIGxhc3Quc3RhdHVzID0gJ2ludGVycnVwdGVkJ1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnbW9kZWxfc3dpdGNoJzpcbiAgICAgICAgc3RhdGUubW9kZWwgPSBldmVudC5kYXRhLnRvXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdlZmZvcnQnOlxuICAgICAgICBzdGF0ZS5lZmZvcnQgPSBldmVudC5kYXRhLnRvXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0aXRsZSc6XG4gICAgICAgIHN0YXRlLnRpdGxlID0gZXZlbnQuZGF0YS50ZXh0XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjb2xvcic6XG4gICAgICAgIHN0YXRlLmNvbG9yID0gZXZlbnQuZGF0YS52YWx1ZVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAncmV3aW5kJzpcbiAgICAgICAgaWYgKCFjYW5jZWxlZFVuZG9UYXJnZXRzLmhhcyhldmVudC5pZCkpIGZvbGRSZXdpbmQoc3RhdGUsIGV2ZW50KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnY29tcGFjdCc6IHtcbiAgICAgICAgY29uc3QgeyBzdW1tYXJ5LCBrZWVwRnJvbSwgc2Vzc2lvbkZpbGUgfSA9IGV2ZW50LmRhdGFcbiAgICAgICAgaWYgKGtlZXBGcm9tICE9PSB1bmRlZmluZWQgfHwgc2Vzc2lvbkZpbGUpIHtcbiAgICAgICAgICBjb25zdCBpZHggPSBrZWVwRnJvbSA/IHN0YXRlLmhpc3RvcnlFdmVudElkcy5pbmRleE9mKGtlZXBGcm9tKSA6IC0xXG4gICAgICAgICAgY29uc3Qga2VwdCA9IGlkeCA+PSAwID8gc3RhdGUucHJvdmlkZXJIaXN0b3J5LnNsaWNlKGlkeCkgOiBbXVxuICAgICAgICAgIGNvbnN0IGtlcHRJZHMgPSBpZHggPj0gMCA/IHN0YXRlLmhpc3RvcnlFdmVudElkcy5zbGljZShpZHgpIDogW11cbiAgICAgICAgICBzdGF0ZS5wcm92aWRlckhpc3RvcnkgPSBbXG4gICAgICAgICAgICB7IHJvbGU6ICd1c2VyJywgY29udGVudDogY29udGludWF0aW9uTWVzc2FnZShzdW1tYXJ5LCB7IHNlc3Npb25GaWxlLCByZWNlbnRLZXB0OiBrZXB0Lmxlbmd0aCA+IDAgfSkgfSxcbiAgICAgICAgICAgIC4uLmtlcHQsXG4gICAgICAgICAgXVxuICAgICAgICAgIHN0YXRlLmhpc3RvcnlFdmVudElkcyA9IFtudWxsLCAuLi5rZXB0SWRzXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLnByb3ZpZGVySGlzdG9yeSA9IFtcbiAgICAgICAgICAgIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiBgW2NvbnZlcnNhdGlvbiBzdW1tYXJ5XVxcbiR7c3VtbWFyeX1gIH0sXG4gICAgICAgICAgICB7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiAnR290IGl0LiBDb250aW51aW5nIGZyb20gdGhhdCBzdW1tYXJ5LicgfSxcbiAgICAgICAgICBdXG4gICAgICAgICAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzID0gW251bGwsIG51bGxdXG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ3N1bW1hcnknLCBzb3VyY2U6ICdjb21wYWN0JywgdGV4dDogc3VtbWFyeSB9KVxuICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zID0gMFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0ID0gW11cbiAgICAgICAgc3RhdGUucHJvdmlkZXJIaXN0b3J5ID0gW11cbiAgICAgICAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzID0gW11cbiAgICAgICAgc3RhdGUudG9vbEl0ZW1zID0gbmV3IE1hcCgpXG4gICAgICAgIHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgPSAwXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjb250ZXh0X2ZpbGUnOlxuICAgICAgICBzdGF0ZS5sb2FkZWRDb250ZXh0LmFkZChldmVudC5kYXRhLnBhdGgpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdza2lsbCc6XG4gICAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdza2lsbCcsIG5hbWU6IGV2ZW50LmRhdGEubmFtZSB9KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndGhvdWdodHMnOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAndGhvdWdodHMnLCB0ZXh0OiBldmVudC5kYXRhLnRleHQgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NoZWxsX25vdGUnOlxuICAgICAgY2FzZSAnc3lzdGVtX25vdGUnOlxuICAgICAgICBwdXNoSGlzdG9yeShzdGF0ZSwgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IGV2ZW50LmRhdGEudGV4dCB9LCBldmVudC5pZClcbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ25vdGljZScsIHRleHQ6IGV2ZW50LmRhdGEudGV4dC5zcGxpdCgnXFxuJylbMF0gfSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJFbnRyaWVzKHN0YXRlKSB7XG4gIGNvbnN0IGVudHJpZXMgPSBbXVxuICBzdGF0ZS50cmFuc2NyaXB0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGl0ZW0ua2luZCA9PT0gJ3VzZXInKSBlbnRyaWVzLnB1c2goeyB0ZXh0OiBpdGVtLnRleHQsIGNvbnRlbnQ6IGl0ZW0uY29udGVudCwgaW5kZXgsIGV2ZW50SWQ6IGl0ZW0uZXZlbnRJZCB9KVxuICB9KVxuICByZXR1cm4gZW50cmllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV3aW5kU3RhdHMoc3RhdGUsIGluZGV4KSB7XG4gIGNvbnN0IHRhaWwgPSBzdGF0ZS50cmFuc2NyaXB0LnNsaWNlKGluZGV4KVxuICByZXR1cm4ge1xuICAgIG1zZ3M6IHRhaWwubGVuZ3RoLFxuICAgIGVkaXRzOiB0YWlsLmZpbHRlcigobSkgPT4gbS5raW5kID09PSAndG9vbCcgJiYgbS5yZXZlcnQgJiYgbS5zdGF0dXMgIT09ICdyZXZlcnRlZCcpLFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgY29tcG9zZSwgc2NvcGUsIG1vZGVsLCBub1Rvb2xzQ2FsbGVkLCBJbmhlcml0LCBnZXRUZXh0IH0gZnJvbSAnQHByc20vYWknXG5cbmFzeW5jIGZ1bmN0aW9uIGh5ZHJhdGVQYXJ0KHBhcnQpIHtcbiAgaWYgKHBhcnQudHlwZSAhPT0gJ2ltYWdlJyB8fCBwYXJ0LnNvdXJjZT8ua2luZCAhPT0gJ3BhdGgnKSByZXR1cm4gcGFydFxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkRmlsZShwYXJ0LnNvdXJjZS5wYXRoKVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgc291cmNlOiB7IGtpbmQ6ICdiYXNlNjQnLCBtZWRpYVR5cGU6IHBhcnQuc291cmNlLm1lZGlhVHlwZSwgZGF0YTogZGF0YS50b1N0cmluZygnYmFzZTY0JykgfSxcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IHR5cGU6ICd0ZXh0JywgdGV4dDogYFtpbWFnZSB1bmF2YWlsYWJsZTogJHtwYXJ0LnNvdXJjZS5wYXRofV1gIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlkcmF0ZUltYWdlcyhoaXN0b3J5KSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICBoaXN0b3J5Lm1hcChhc3luYyAobWVzc2FnZSkgPT5cbiAgICAgIEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KVxuICAgICAgICA/IHsgLi4ubWVzc2FnZSwgY29udGVudDogYXdhaXQgUHJvbWlzZS5hbGwobWVzc2FnZS5jb250ZW50Lm1hcChoeWRyYXRlUGFydCkpIH1cbiAgICAgICAgOiBtZXNzYWdlLFxuICAgICksXG4gIClcbn1cblxuY29uc3QgU1RBTExfTVMgPSA5MDAwMFxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29tcGFjdEhpc3RvcnkoeyBoaXN0b3J5LCBtb2RlbE5hbWUsIGF1dGgsIHByb21wdCwgc2lnbmFsIH0pIHtcbiAgY29uc3Qgb3V0ID0gYXdhaXQgY29tcG9zZShcbiAgICBtb2RlbCh7XG4gICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgLi4uKGF1dGg/LmFwaUtleSAmJiB7IGFwaUtleTogYXV0aC5hcGlLZXkgfSksXG4gICAgICAuLi4oYXV0aD8uaGVhZGVycyAmJiB7IGhlYWRlcnM6IGF1dGguaGVhZGVycyB9KSxcbiAgICB9KSxcbiAgKSh7XG4gICAgaGlzdG9yeTogWy4uLmhpc3RvcnkuZmlsdGVyKChtKSA9PiBtLnJvbGUgIT09ICdzeXN0ZW0nKSwgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IHByb21wdCB9XSxcbiAgICB0b29sczogW10sXG4gICAgYWJvcnRTaWduYWw6IHNpZ25hbCxcbiAgfSlcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgdGhyb3cgbmV3IEVycm9yKCdjb21wYWN0aW9uIGNhbmNlbGxlZCcpXG4gIHJldHVybiBnZXRUZXh0KG91dC5sYXN0UmVzcG9uc2U/LmNvbnRlbnQgfHwgJycpLnRyaW0oKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VtbWFyaXplVGV4dCh7IHRleHQsIG1vZGVsTmFtZSB9KSB7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNvbXBvc2UoXG4gICAgbW9kZWwoe1xuICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgIHN5c3RlbTogJ1N1bW1hcml6ZSB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbiBleGNlcnB0IGluIDItNCBkZW5zZSBzZW50ZW5jZXMuIENhcHR1cmUgZGVjaXNpb25zLCBjaGFuZ2VzIG1hZGUsIGFuZCBvcGVuIHF1ZXN0aW9ucy4gT3V0cHV0IG9ubHkgdGhlIHN1bW1hcnkuJyxcbiAgICB9KSxcbiAgKSh0ZXh0LnNsaWNlKDAsIDMwMDAwKSlcbiAgcmV0dXJuIGdldFRleHQob3V0Lmxhc3RSZXNwb25zZT8uY29udGVudCB8fCAnJykudHJpbSgpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5UdXJuKHsgaGlzdG9yeSwgdG9vbHMsIHJlY29yZGVyLCBtb2RlbE5hbWUsIGVmZm9ydCwgYXV0aCwgc3lzdGVtLCBzaWduYWwsIG9uU3RyZWFtLCBzdGFsbE1zID0gU1RBTExfTVMgfSkge1xuICBjb25zdCBjb2xsZWN0ZWQgPSBbXVxuICBsZXQgcm91bmRUZXh0ID0gJydcbiAgbGV0IHVzYWdlU2VlbiA9IG51bGxcbiAgbGV0IHN0YWxsZWQgPSBmYWxzZVxuICAvLyB1c2FnZSBldmVudHMgY2FycnkgY3VtdWxhdGl2ZSB0b3RhbHMgcGVyIHJlcXVlc3Qgcm91bmQsIHNvIGNvbnNlY3V0aXZlXG4gIC8vIGRlbHRhcyByZWNvdmVyIGVhY2ggcm91bmQncyB0cnVlIGlucHV0IHNpemU7IHRoZSBsYXN0IGRlbHRhIGlzIHRoZSBzaXplXG4gIC8vIG9mIHRoZSBjdXJyZW50IGNvbnRleHQgYXMgYWN0dWFsbHkgc2VudFxuICBsZXQgY3VtdWxhdGl2ZVByb21wdCA9IDBcbiAgbGV0IGxhc3RQcm9tcHRUb2tlbnMgPSAwXG5cbiAgY29uc3QgaW50ZXJuYWwgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgY29uc3Qgb25Vc2VyQWJvcnQgPSAoKSA9PiBpbnRlcm5hbC5hYm9ydCgpXG4gIGlmIChzaWduYWw/LmFib3J0ZWQpIGludGVybmFsLmFib3J0KClcbiAgZWxzZSBzaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25Vc2VyQWJvcnQsIHsgb25jZTogdHJ1ZSB9KVxuXG4gIGxldCB3YXRjaGRvZyA9IG51bGxcbiAgY29uc3QgYXJtID0gKCkgPT4ge1xuICAgIGNsZWFyVGltZW91dCh3YXRjaGRvZylcbiAgICB3YXRjaGRvZyA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc3RhbGxlZCA9IHRydWVcbiAgICAgIGludGVybmFsLmFib3J0KClcbiAgICB9LCBzdGFsbE1zKVxuICB9XG5cbiAgY29uc3Qgc3RyZWFtID0gKGV2ZW50KSA9PiB7XG4gICAgYXJtKClcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICByb3VuZFRleHQgKz0gZXZlbnQuY29udGVudFxuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY2FsbHNfcmVhZHknKSB7XG4gICAgICBjb2xsZWN0ZWQucHVzaCh7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiByb3VuZFRleHQsIHRvb2xfY2FsbHM6IGV2ZW50LmNhbGxzIH0pXG4gICAgICByb3VuZFRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXhlY3V0aW5nJykge1xuICAgICAgcmVjb3JkZXIuY3VycmVudENhbGwgPSBldmVudC5jYWxsXG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9jb21wbGV0ZScpIHtcbiAgICAgIGNvbGxlY3RlZC5wdXNoKHsgcm9sZTogJ3Rvb2wnLCB0b29sX2NhbGxfaWQ6IGV2ZW50LmNhbGwuaWQsIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KGV2ZW50LnJlc3VsdCkgfSlcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJykge1xuICAgICAgY29sbGVjdGVkLnB1c2goeyByb2xlOiAndG9vbCcsIHRvb2xfY2FsbF9pZDogZXZlbnQuY2FsbC5pZCwgY29udGVudDogSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogZXZlbnQuZXJyb3IgfSkgfSlcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd1c2FnZScpIHtcbiAgICAgIHVzYWdlU2VlbiA9IGV2ZW50LnVzYWdlXG4gICAgICBjb25zdCBwcm9tcHQgPSBldmVudC51c2FnZT8ucHJvbXB0VG9rZW5zIHx8IDBcbiAgICAgIGxhc3RQcm9tcHRUb2tlbnMgPSBNYXRoLm1heCgwLCBwcm9tcHQgLSBjdW11bGF0aXZlUHJvbXB0KVxuICAgICAgY3VtdWxhdGl2ZVByb21wdCA9IHByb21wdFxuICAgIH1cbiAgICBvblN0cmVhbT8uKGV2ZW50KVxuICB9XG5cbiAgY29uc3QgYmFzZSA9IGhpc3RvcnkubGVuZ3RoXG4gIGNvbnN0IHN0ZXAgPSBjb21wb3NlKFxuICAgIHNjb3BlKFxuICAgICAgeyBpbmhlcml0OiBJbmhlcml0LkNvbnZlcnNhdGlvbiwgc3lzdGVtLCB0b29scywgdW50aWw6IG5vVG9vbHNDYWxsZWQoKSwgc3RyZWFtIH0sXG4gICAgICAoY3R4KSA9PlxuICAgICAgICBtb2RlbCh7XG4gICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAuLi4oZWZmb3J0ICYmIHsgZWZmb3J0IH0pLFxuICAgICAgICAgIC4uLihhdXRoPy5hcGlLZXkgJiYgeyBhcGlLZXk6IGF1dGguYXBpS2V5IH0pLFxuICAgICAgICAgIC4uLihhdXRoPy5oZWFkZXJzICYmIHsgaGVhZGVyczogYXV0aC5oZWFkZXJzIH0pLFxuICAgICAgICB9KSh7IC4uLmN0eCwgYWJvcnRTaWduYWw6IGludGVybmFsLnNpZ25hbCB9KSxcbiAgICApLFxuICApXG5cbiAgY29uc3QgcGFydGlhbE1lc3NhZ2VzID0gKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gWy4uLmNvbGxlY3RlZF1cbiAgICBpZiAocm91bmRUZXh0KSBtZXNzYWdlcy5wdXNoKHsgcm9sZTogJ2Fzc2lzdGFudCcsIGNvbnRlbnQ6IHJvdW5kVGV4dCB9KVxuICAgIHJldHVybiBtZXNzYWdlc1xuICB9XG5cbiAgYXJtKClcbiAgdHJ5IHtcbiAgICBjb25zdCBvdXQgPSBhd2FpdCBzdGVwKHsgaGlzdG9yeTogYXdhaXQgaHlkcmF0ZUltYWdlcyhoaXN0b3J5KSwgdG9vbHM6IFtdIH0pXG4gICAgY29uc3QgaW50ZXJydXB0ZWQgPSAhIXNpZ25hbD8uYWJvcnRlZCB8fCBzdGFsbGVkXG4gICAgaWYgKGludGVycnVwdGVkKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlczogcGFydGlhbE1lc3NhZ2VzKCksIHVzYWdlOiB1c2FnZVNlZW4sIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkLCBzdGFsbGVkIH1cbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZXMgPSBvdXQuaGlzdG9yeS5maWx0ZXIoKG0pID0+IG0ucm9sZSAhPT0gJ3N5c3RlbScpLnNsaWNlKGJhc2UpXG4gICAgcmV0dXJuIHsgbWVzc2FnZXMsIHVzYWdlOiBvdXQudXNhZ2UgfHwgbnVsbCwgbGFzdFByb21wdFRva2VucywgaW50ZXJydXB0ZWQ6IGZhbHNlLCBzdGFsbGVkOiBmYWxzZSB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIubmFtZSA9PT0gJ0Fib3J0RXJyb3InIHx8IGludGVybmFsLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlczogcGFydGlhbE1lc3NhZ2VzKCksIHVzYWdlOiB1c2FnZVNlZW4sIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkOiB0cnVlLCBzdGFsbGVkIH1cbiAgICB9XG4gICAgdGhyb3cgZXJyXG4gIH0gZmluYWxseSB7XG4gICAgY2xlYXJUaW1lb3V0KHdhdGNoZG9nKVxuICAgIHNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvblVzZXJBYm9ydClcbiAgfVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0VGl0bGUobmFtZSwgYXJncyA9IHt9KSB7XG4gIGNvbnN0IGNhbmRpZGF0ZSA9IGFyZ3MucGF0aCB8fCBhcmdzLmNvbW1hbmQgfHwgYXJncy5wYXR0ZXJuIHx8IGFyZ3MudXJsIHx8IGFyZ3MubmFtZVxuICBpZiAodHlwZW9mIGNhbmRpZGF0ZSA9PT0gJ3N0cmluZycgJiYgY2FuZGlkYXRlKSByZXR1cm4gY2FuZGlkYXRlXG4gIGNvbnN0IHJhdyA9IEpTT04uc3RyaW5naWZ5KGFyZ3MpXG4gIGlmICghcmF3IHx8IHJhdyA9PT0gJ3t9JykgcmV0dXJuIG5hbWVcbiAgcmV0dXJuIHJhdy5sZW5ndGggPiA2MCA/IHJhdy5zbGljZSgwLCA2MCkgKyAnXHUyMDI2JyA6IHJhd1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVjb3JkZXIoKSB7XG4gIHJldHVybiB7XG4gICAgY3VycmVudENhbGw6IG51bGwsXG4gICAgZW50cmllczogW10sXG4gICAgcGVuZGluZzogbnVsbCxcbiAgICBiZWdpbihuYW1lLCBhcmdzKSB7XG4gICAgICB0aGlzLnBlbmRpbmcgPSB7XG4gICAgICAgIGNhbGxJZDogdGhpcy5jdXJyZW50Q2FsbD8uaWQgPz8gbnVsbCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdGl0bGU6IGRlZmF1bHRUaXRsZShuYW1lLCBhcmdzKSxcbiAgICAgICAgc3RhdHVzOiAnZG9uZScsXG4gICAgICAgIHN0YXJ0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGV4dHJhKGZpZWxkcykge1xuICAgICAgaWYgKHRoaXMucGVuZGluZykgT2JqZWN0LmFzc2lnbih0aGlzLnBlbmRpbmcsIGZpZWxkcylcbiAgICB9LFxuICAgIGRvbmUoZmllbGRzID0ge30pIHtcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nKSByZXR1cm5cbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5wZW5kaW5nLCBmaWVsZHMsIHtcbiAgICAgICAgZHVyYXRpb25NczogRGF0ZS5ub3coKSAtIHRoaXMucGVuZGluZy5zdGFydGVkQXQsXG4gICAgICB9KVxuICAgICAgZGVsZXRlIHRoaXMucGVuZGluZy5zdGFydGVkQXRcbiAgICAgIGlmICh0aGlzLnBlbmRpbmcuZnVsbE91dHB1dD8ubGVuZ3RoID4gMjAwMDAwKSB7XG4gICAgICAgIHRoaXMucGVuZGluZy5mdWxsT3V0cHV0ID0gdGhpcy5wZW5kaW5nLmZ1bGxPdXRwdXQuc2xpY2UoMCwgMjAwMDAwKSArICdcXG5bdHJ1bmNhdGVkXSdcbiAgICAgIH1cbiAgICAgIHRoaXMuZW50cmllcy5wdXNoKHRoaXMucGVuZGluZylcbiAgICAgIHRoaXMucGVuZGluZyA9IG51bGxcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNvcmRlZChyZWNvcmRlciwgbmFtZSwgZm4pIHtcbiAgcmV0dXJuIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgcmVjb3JkZXIuYmVnaW4obmFtZSwgYXJncylcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oYXJncylcbiAgICAgIGlmICghcmVjb3JkZXIucGVuZGluZz8uZnVsbE91dHB1dCAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7XG4gICAgICAgICAgZnVsbE91dHB1dDogdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcmVjb3JkZXIuZG9uZSgpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWNvcmRlci5kb25lKHsgc3RhdHVzOiAnZXJyb3InLCBlcnJvcjogU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikgfSlcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1BWF9MSU5FUyA9IDIwMDBcbmNvbnN0IE1BWF9MSU5FX0xFTkdUSCA9IDIwMDBcblxuZnVuY3Rpb24gaXNCaW5hcnkoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IE1hdGgubWluKGJ1ZmZlci5sZW5ndGgsIDgwMDApXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYnVmZmVyW2ldID09PSAwKSByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhZCh7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdyZWFkJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlYWQgYSBmaWxlLiBSZXR1cm5zIGxpbmUtbnVtYmVyZWQgY29udGVudC4gVXNlIG9mZnNldC9saW1pdCBmb3IgbGFyZ2UgZmlsZXMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb3IgYWJzb2x1dGUnIH0sXG4gICAgICBvZmZzZXQ6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnMS1pbmRleGVkIGxpbmUgdG8gc3RhcnQgZnJvbScsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBsaW1pdDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdtYXggbGluZXMgdG8gcmV0dXJuJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdGgsIG9mZnNldCA9IDEsIGxpbWl0ID0gTUFYX0xJTkVTIH0pID0+IHtcbiAgICAgIGNvbnN0IGZ1bGwgPSByZXNvbHZlKGN3ZCwgcGF0aClcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdGggfSlcbiAgICAgIGNvbnN0IGJ1ZiA9IGF3YWl0IHJlYWRGaWxlKGZ1bGwpXG4gICAgICBpZiAoaXNCaW5hcnkoYnVmKSkgdGhyb3cgbmV3IEVycm9yKGAke3BhdGh9IGlzIGEgYmluYXJ5IGZpbGVgKVxuICAgICAgY29uc3QgbGluZXMgPSBidWYudG9TdHJpbmcoJ3V0Zi04Jykuc3BsaXQoJ1xcbicpXG5cbiAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgb2Zmc2V0IC0gMSlcbiAgICAgIGNvbnN0IGNvdW50ID0gTWF0aC5taW4obGltaXQsIE1BWF9MSU5FUylcbiAgICAgIGNvbnN0IHNsaWNlZCA9IGxpbmVzLnNsaWNlKHN0YXJ0LCBzdGFydCArIGNvdW50KVxuICAgICAgY29uc3QgbnVtYmVyZWQgPSBzbGljZWRcbiAgICAgICAgLm1hcCgobGluZSwgaSkgPT4gYCR7c3RhcnQgKyBpICsgMX1cXHQke2xpbmUubGVuZ3RoID4gTUFYX0xJTkVfTEVOR1RIID8gbGluZS5zbGljZSgwLCBNQVhfTElORV9MRU5HVEgpICsgJ1x1MjAyNicgOiBsaW5lfWApXG4gICAgICAgIC5qb2luKCdcXG4nKVxuXG4gICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IHNsaWNlZC5qb2luKCdcXG4nKSB9KVxuICAgICAgY29uc3QgcmVzdWx0ID0geyBjb250ZW50OiBudW1iZXJlZCwgdG90YWxMaW5lczogbGluZXMubGVuZ3RoIH1cbiAgICAgIGlmIChzdGFydCArIGNvdW50IDwgbGluZXMubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdC5ub3RlID0gYHNob3dpbmcgbGluZXMgJHtzdGFydCArIDF9LSR7c3RhcnQgKyBzbGljZWQubGVuZ3RofSBvZiAke2xpbmVzLmxlbmd0aH1gXG4gICAgICB9XG4gICAgICBjb25zdCBjb250ZXh0ID0gdHJhY2tlci5jaGVjayhmdWxsKVxuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoKSByZXN1bHQuY29udGV4dF9mcm9tX2FnZW50c19tZCA9IGNvbnRleHRcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgc3RydWN0dXJlZFBhdGNoIH0gZnJvbSAnZGlmZidcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VEaWZmKHBhdGgsIG9sZFRleHQsIG5ld1RleHQsIGNvbnRleHRMaW5lcyA9IDMpIHtcbiAgY29uc3QgcGF0Y2ggPSBzdHJ1Y3R1cmVkUGF0Y2gocGF0aCwgcGF0aCwgb2xkVGV4dCwgbmV3VGV4dCwgJycsICcnLCB7IGNvbnRleHQ6IGNvbnRleHRMaW5lcyB9KVxuICBsZXQgYWRkaXRpb25zID0gMFxuICBsZXQgZGVsZXRpb25zID0gMFxuICBjb25zdCBodW5rcyA9IHBhdGNoLmh1bmtzLm1hcCgoaCkgPT4gKHtcbiAgICBvbGRTdGFydDogaC5vbGRTdGFydCxcbiAgICBuZXdTdGFydDogaC5uZXdTdGFydCxcbiAgICBsaW5lczogaC5saW5lcy5tYXAoKGxpbmUpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBsaW5lWzBdID09PSAnLScgPyAncmVtb3ZlJyA6IGxpbmVbMF0gPT09ICcrJyA/ICdhZGQnIDogJ2NvbnRleHQnXG4gICAgICBpZiAodHlwZSA9PT0gJ2FkZCcpIGFkZGl0aW9ucysrXG4gICAgICBpZiAodHlwZSA9PT0gJ3JlbW92ZScpIGRlbGV0aW9ucysrXG4gICAgICByZXR1cm4geyB0eXBlLCB0ZXh0OiBsaW5lLnNsaWNlKDEpIH1cbiAgICB9KSxcbiAgfSkpXG4gIHJldHVybiB7IHBhdGgsIGh1bmtzLCBhZGRpdGlvbnMsIGRlbGV0aW9ucyB9XG59XG4iLCAiaW1wb3J0IHsgbWtkaXIsIHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgZGlybmFtZSwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IG1ha2VEaWZmIH0gZnJvbSAnLi9kaWZmLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV3JpdGUoeyBjd2QsIHJlY29yZGVyLCB0cmFja2VyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnd3JpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnV3JpdGUgY29udGVudCB0byBhIGZpbGUsIGNyZWF0aW5nIGl0IGFuZCBhbnkgcGFyZW50IGRpcmVjdG9yaWVzIGlmIG5lZWRlZC4gT3ZlcndyaXRlcyBleGlzdGluZyBjb250ZW50LicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgcGF0aCwgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9yIGFic29sdXRlJyB9LFxuICAgICAgY29udGVudDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgZnVsbCBmaWxlIGNvbnRlbnQgdG8gd3JpdGUnIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXRoLCBjb250ZW50IH0pID0+IHtcbiAgICAgIGNvbnN0IGZ1bGwgPSByZXNvbHZlKGN3ZCwgcGF0aClcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdGggfSlcbiAgICAgIGF3YWl0IG1rZGlyKGRpcm5hbWUoZnVsbCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBsZXQgYmVmb3JlID0gbnVsbFxuICAgICAgdHJ5IHtcbiAgICAgICAgYmVmb3JlID0gYXdhaXQgcmVhZEZpbGUoZnVsbCwgJ3V0Zi04JylcbiAgICAgIH0gY2F0Y2gge31cblxuICAgICAgaWYgKGJlZm9yZSA9PT0gY29udGVudCkge1xuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSwgcGF0aCwgdW5jaGFuZ2VkOiB0cnVlLCBub3RlOiAnZmlsZSBhbHJlYWR5IGhhZCBleGFjdGx5IHRoaXMgY29udGVudCcgfVxuICAgICAgfVxuICAgICAgYXdhaXQgd3JpdGVGaWxlKGZ1bGwsIGNvbnRlbnQsICd1dGYtOCcpXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgb2s6IHRydWUsIHBhdGggfVxuICAgICAgaWYgKGJlZm9yZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBkaWZmID0gbWFrZURpZmYocGF0aCwgYmVmb3JlLCBjb250ZW50KVxuICAgICAgICByZWNvcmRlci5leHRyYSh7IGRpZmYsIHJldmVydDogeyBwYXRoOiBmdWxsLCBiZWZvcmUsIGFmdGVyOiBjb250ZW50IH0gfSlcbiAgICAgICAgcmVzdWx0LmFkZGl0aW9ucyA9IGRpZmYuYWRkaXRpb25zXG4gICAgICAgIHJlc3VsdC5kZWxldGlvbnMgPSBkaWZmLmRlbGV0aW9uc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyByZXZlcnQ6IHsgcGF0aDogZnVsbCwgYmVmb3JlOiAnJywgYWZ0ZXI6IGNvbnRlbnQgfSwgY3JlYXRlZDogdHJ1ZSB9KVxuICAgICAgICByZXN1bHQuY3JlYXRlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0cmFja2VyLmNoZWNrKGZ1bGwpXG4gICAgICBpZiAoY29udGV4dC5sZW5ndGgpIHJlc3VsdC5jb250ZXh0X2Zyb21fYWdlbnRzX21kID0gY29udGV4dFxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBtYWtlRGlmZiB9IGZyb20gJy4vZGlmZi5qcydcblxuY29uc3Qgbm9ybWFsaXplID0gKHMpID0+XG4gIHNcbiAgICAucmVwbGFjZSgvXFxzKyQvZ20sICcnKVxuICAgIC5yZXBsYWNlKC9bXHUyMDE4XHUyMDE5XS9nLCBcIidcIilcbiAgICAucmVwbGFjZSgvW1x1MjAxQ1x1MjAxRF0vZywgJ1wiJylcbiAgICAucmVwbGFjZSgvW1x1MjAxM1x1MjAxNF0vZywgJy0nKVxuXG5mdW5jdGlvbiBsb2NhdGUoY29udGVudCwgb2xkLCBwYXRoKSB7XG4gIGxldCBpbmRleCA9IGNvbnRlbnQuaW5kZXhPZihvbGQpXG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBpZiAoY29udGVudC5pbmRleE9mKG9sZCwgaW5kZXggKyAxKSAhPT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gJHtwYXRofSwgcHJvdmlkZSBtb3JlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gbWFrZSBpdCB1bmlxdWVgKVxuICAgIH1cbiAgICByZXR1cm4geyBpbmRleCwgbGVuZ3RoOiBvbGQubGVuZ3RoLCBjb250ZW50IH1cbiAgfVxuXG4gIGNvbnN0IG5vcm1lZENvbnRlbnQgPSBub3JtYWxpemUoY29udGVudClcbiAgY29uc3Qgbm9ybWVkT2xkID0gbm9ybWFsaXplKG9sZClcbiAgaW5kZXggPSBub3JtZWRDb250ZW50LmluZGV4T2Yobm9ybWVkT2xkKVxuICBpZiAoaW5kZXggPT09IC0xKSB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBub3QgZm91bmQgaW4gJHtwYXRofWApXG4gIGlmIChub3JtZWRDb250ZW50LmluZGV4T2Yobm9ybWVkT2xkLCBpbmRleCArIDEpICE9PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gJHtwYXRofSwgcHJvdmlkZSBtb3JlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gbWFrZSBpdCB1bmlxdWVgKVxuICB9XG4gIHJldHVybiB7IGluZGV4LCBsZW5ndGg6IG5vcm1lZE9sZC5sZW5ndGgsIGNvbnRlbnQ6IG5vcm1lZENvbnRlbnQgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWRpdCh7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdlZGl0JyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlcGxhY2Ugb2xkVGV4dCB3aXRoIG5ld1RleHQgaW4gYSBmaWxlLiBvbGRUZXh0IG11c3QgYXBwZWFyIGV4YWN0bHkgb25jZSB1bmxlc3MgcmVwbGFjZUFsbCBpcyBzZXQuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb3IgYWJzb2x1dGUnIH0sXG4gICAgICBvbGRUZXh0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2V4YWN0IHRleHQgdG8gcmVwbGFjZSwgbXVzdCBiZSB1bmlxdWUgaW4gdGhlIGZpbGUnIH0sXG4gICAgICBuZXdUZXh0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3JlcGxhY2VtZW50IHRleHQnIH0sXG4gICAgICByZXBsYWNlQWxsOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdyZXBsYWNlIGV2ZXJ5IG9jY3VycmVuY2UnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgb2xkVGV4dCwgbmV3VGV4dCwgcmVwbGFjZUFsbCB9KSA9PiB7XG4gICAgICBjb25zdCBmdWxsID0gcmVzb2x2ZShjd2QsIHBhdGgpXG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXRoIH0pXG4gICAgICBjb25zdCBiZWZvcmUgPSBhd2FpdCByZWFkRmlsZShmdWxsLCAndXRmLTgnKVxuXG4gICAgICBsZXQgYWZ0ZXJcbiAgICAgIGlmIChyZXBsYWNlQWxsKSB7XG4gICAgICAgIGlmICghYmVmb3JlLmluY2x1ZGVzKG9sZFRleHQpKSB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBub3QgZm91bmQgaW4gJHtwYXRofWApXG4gICAgICAgIGFmdGVyID0gYmVmb3JlLnNwbGl0KG9sZFRleHQpLmpvaW4obmV3VGV4dClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgaW5kZXgsIGxlbmd0aCwgY29udGVudCB9ID0gbG9jYXRlKGJlZm9yZSwgb2xkVGV4dCwgcGF0aClcbiAgICAgICAgYWZ0ZXIgPSBjb250ZW50LnNsaWNlKDAsIGluZGV4KSArIG5ld1RleHQgKyBjb250ZW50LnNsaWNlKGluZGV4ICsgbGVuZ3RoKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZnVsbCwgYWZ0ZXIsICd1dGYtOCcpXG4gICAgICBjb25zdCBkaWZmID0gbWFrZURpZmYocGF0aCwgYmVmb3JlLCBhZnRlcilcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZGlmZiwgcmV2ZXJ0OiB7IHBhdGg6IGZ1bGwsIGJlZm9yZSwgYWZ0ZXIgfSB9KVxuXG4gICAgICBjb25zdCByZXN1bHQgPSB7IG9rOiB0cnVlLCBwYXRoLCBhZGRpdGlvbnM6IGRpZmYuYWRkaXRpb25zLCBkZWxldGlvbnM6IGRpZmYuZGVsZXRpb25zIH1cbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0cmFja2VyLmNoZWNrKGZ1bGwpXG4gICAgICBpZiAoY29udGV4dC5sZW5ndGgpIHJlc3VsdC5jb250ZXh0X2Zyb21fYWdlbnRzX21kID0gY29udGV4dFxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGVjIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5jb25zdCBNQVhfT1VUUFVUX0NIQVJTID0gMzAwMDBcblxuZnVuY3Rpb24gY2FwcGVkKHRleHQpIHtcbiAgaWYgKHRleHQubGVuZ3RoIDw9IE1BWF9PVVRQVVRfQ0hBUlMpIHJldHVybiB0ZXh0XG4gIHJldHVybiB0ZXh0LnNsaWNlKDAsIE1BWF9PVVRQVVRfQ0hBUlMpICsgYFxcbltvdXRwdXQgdHJ1bmNhdGVkIGF0ICR7TUFYX09VVFBVVF9DSEFSU30gY2hhcmFjdGVyc11gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCYXNoKHsgY3dkLCByZWNvcmRlciwgc2lnbmFsLCBzaGVsbHMgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdiYXNoJyxcbiAgICBkZXNjcmlwdGlvbjogJ1J1biBhIHNoZWxsIGNvbW1hbmQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiBSZXR1cm5zIHN0ZG91dCwgc3RkZXJyLCBhbmQgZXhpdCBjb2RlLiBTZXQgYmFja2dyb3VuZCB0cnVlIGZvciBsb25nLXJ1bm5pbmcgcHJvY2Vzc2VzIGxpa2UgZGV2IHNlcnZlcnM6IGl0IHJldHVybnMgYSBzaGVsbCBpZCBpbW1lZGlhdGVseTsgY2hlY2sgb24gaXQgd2l0aCBzaGVsbF9vdXRwdXQgYW5kIHN0b3AgaXQgd2l0aCBzaGVsbF9raWxsLicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBjb21tYW5kOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBjb21tYW5kIHRvIHJ1bicgfSxcbiAgICAgIHRpbWVvdXQ6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAndGltZW91dCBpbiBtaWxsaXNlY29uZHMsIGRlZmF1bHQgMTIwMDAwJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGJhY2tncm91bmQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ3J1biBpbiB0aGUgYmFja2dyb3VuZCBhbmQgcmV0dXJuIGEgc2hlbGwgaWQgaW1tZWRpYXRlbHknLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogKHsgY29tbWFuZCwgdGltZW91dCwgYmFja2dyb3VuZCB9KSA9PiB7XG4gICAgICBpZiAoYmFja2dyb3VuZCAmJiBzaGVsbHMpIHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogY29tbWFuZCwgYmFja2dyb3VuZDogdHJ1ZSB9KVxuICAgICAgICBjb25zdCB7IGlkIH0gPSBzaGVsbHMuc3RhcnQoY29tbWFuZCwgeyBjd2QgfSlcbiAgICAgICAgcmV0dXJuIHsgc2hlbGxJZDogaWQsIHN0YXR1czogJ3J1bm5pbmcnIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBjb21tYW5kIH0pXG4gICAgICAgIGNvbnN0IGNoaWxkID0gZXhlYyhcbiAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGN3ZCxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHRpbWVvdXQgfHwgMTIwMDAwLFxuICAgICAgICAgICAgbWF4QnVmZmVyOiAxMCAqIDEwMjQgKiAxMDI0LFxuICAgICAgICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCBGT1JDRV9DT0xPUjogJzAnLCBOT19DT0xPUjogJzEnIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyLCBzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXhpdENvZGUgPSBlcnIgPyAodHlwZW9mIGVyci5jb2RlID09PSAnbnVtYmVyJyA/IGVyci5jb2RlIDogMSkgOiAwXG4gICAgICAgICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IFtzdGRvdXQsIHN0ZGVycl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpIH0pXG4gICAgICAgICAgICByZXNvbHZlKHsgc3Rkb3V0OiBjYXBwZWQoc3Rkb3V0IHx8ICcnKSwgc3RkZXJyOiBjYXBwZWQoc3RkZXJyIHx8ICcnKSwgZXhpdENvZGUgfSlcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIGlmIChzaWduYWwpIHtcbiAgICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIGNoaWxkLmtpbGwoKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IGNoaWxkLmtpbGwoKSwgeyBvbmNlOiB0cnVlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IGZnIGZyb20gJ2Zhc3QtZ2xvYidcblxuY29uc3QgTUFYX1JFU1VMVFMgPSAyMDBcblxuZnVuY3Rpb24gcmlwZ3JlcEdsb2IocGF0dGVybiwgY3dkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGFyZ3MgPSBbJy0tZmlsZXMnLCAnLS1oaWRkZW4nLCAnLS1nbG9iJywgcGF0dGVybiwgJy0tZ2xvYicsICchKiovbm9kZV9tb2R1bGVzLyoqJywgJy0tZ2xvYicsICchKiovLmdpdC8qKiddXG4gICAgZXhlY0ZpbGUoJ3JnJywgYXJncywgeyBjd2QsIG1heEJ1ZmZlcjogNTAgKiAxMDI0ICogMTAyNCB9LCAoZXJyLCBzdGRvdXQpID0+IHtcbiAgICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgIT09IDEpIHJlc29sdmUobnVsbClcbiAgICAgIGVsc2UgcmVzb2x2ZShzdGRvdXQgPyBzdGRvdXQuc3BsaXQoJ1xcbicpLmZpbHRlcihCb29sZWFuKSA6IFtdKVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHbG9iKHsgY3dkLCByZWNvcmRlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2dsb2InLFxuICAgIGRlc2NyaXB0aW9uOiAnRmluZCBmaWxlcyBtYXRjaGluZyBhIGdsb2IgcGF0dGVybiwgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiBSZXNwZWN0cyAuZ2l0aWdub3JlOyB1c2UgYmFzaCB0byBsb29rIGluc2lkZSBpZ25vcmVkIHBhdGhzLicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXR0ZXJuOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2dsb2IgcGF0dGVybiwgZS5nLiBzcmMvKiovKi5qcycgfSxcbiAgICAgIG1heFJlc3VsdHM6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnY2FwIG9uIHJldHVybmVkIHBhdGhzLCBkZWZhdWx0IDIwMCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXR0ZXJuLCBtYXhSZXN1bHRzID0gTUFYX1JFU1VMVFMgfSkgPT4ge1xuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0dGVybiB9KVxuICAgICAgbGV0IGZpbGVzID0gYXdhaXQgcmlwZ3JlcEdsb2IocGF0dGVybiwgY3dkKVxuICAgICAgaWYgKGZpbGVzID09PSBudWxsKSB7XG4gICAgICAgIGZpbGVzID0gYXdhaXQgZmcocGF0dGVybiwge1xuICAgICAgICAgIGN3ZCxcbiAgICAgICAgICBkb3Q6IHRydWUsXG4gICAgICAgICAgaWdub3JlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi8uZ2l0LyoqJ10sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IGZpbGVzLmpvaW4oJ1xcbicpIH0pXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlczogZmlsZXMuc2xpY2UoMCwgbWF4UmVzdWx0cyksXG4gICAgICAgIHRvdGFsRm91bmQ6IGZpbGVzLmxlbmd0aCxcbiAgICAgICAgdHJ1bmNhdGVkOiBmaWxlcy5sZW5ndGggPiBtYXhSZXN1bHRzLFxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IHJlbGF0aXZlLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5jb25zdCBNQVhfUkVTVUxUUyA9IDIwMFxuXG5mdW5jdGlvbiBydW5SaXBncmVwKGFyZ3MsIGN3ZCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKGRvbmUpID0+IHtcbiAgICBleGVjRmlsZSgncmcnLCBhcmdzLCB7IGN3ZCwgbWF4QnVmZmVyOiAxMCAqIDEwMjQgKiAxMDI0IH0sIChlcnIsIHN0ZG91dCkgPT4ge1xuICAgICAgZG9uZShlcnIgJiYgIXN0ZG91dCA/ICcnIDogc3Rkb3V0IHx8ICcnKVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHcmVwKHsgY3dkLCByZWNvcmRlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2dyZXAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2VhcmNoIGZpbGUgY29udGVudHMgd2l0aCBhIHJlZ2V4IHVzaW5nIHJpcGdyZXAuIG1vZGUgXCJjb250ZW50XCIgcmV0dXJucyBtYXRjaGluZyBsaW5lcywgXCJmaWxlc1wiIHJldHVybnMgbWF0Y2hpbmcgZmlsZSBwYXRocywgXCJjb3VudFwiIHJldHVybnMgcGVyLWZpbGUgbWF0Y2ggY291bnRzLicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXR0ZXJuOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3JlZ2V4IHBhdHRlcm4nIH0sXG4gICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgb3IgZGlyZWN0b3J5IHRvIHNlYXJjaCwgZGVmYXVsdHMgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Jywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIG1vZGU6IHsgdHlwZTogJ3N0cmluZycsIGVudW06IFsnY29udGVudCcsICdmaWxlcycsICdjb3VudCddLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgZ2xvYjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdmaWx0ZXIgZmlsZXMgYnkgZ2xvYiwgZS5nLiAqLmpzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGlnbm9yZUNhc2U6IHsgdHlwZTogJ2Jvb2xlYW4nLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgY29udGV4dDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdsaW5lcyBvZiBjb250ZXh0IGFyb3VuZCBtYXRjaGVzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIG11bHRpbGluZTogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnYWxsb3cgcGF0dGVybnMgdG8gc3BhbiBsaW5lcycsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBsaW1pdDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdtYXggcmVzdWx0cywgZGVmYXVsdCAyMDAnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0dGVybiwgcGF0aCwgbW9kZSA9ICdjb250ZW50JywgZ2xvYiwgaWdub3JlQ2FzZSwgY29udGV4dCwgbXVsdGlsaW5lLCBsaW1pdCA9IE1BWF9SRVNVTFRTIH0pID0+IHtcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdHRlcm4gfSlcbiAgICAgIGNvbnN0IGFyZ3MgPSBbJy0tbm8taGVhZGluZycsICctLWNvbG9yPW5ldmVyJywgJy0tbWF4LWNvbHVtbnMnLCAnNTAwJywgJy0taGlkZGVuJywgJy0tZ2xvYicsICchKiovLmdpdC8qKiddXG5cbiAgICAgIGlmIChtb2RlID09PSAnZmlsZXMnKSBhcmdzLnB1c2goJy0tZmlsZXMtd2l0aC1tYXRjaGVzJylcbiAgICAgIGVsc2UgaWYgKG1vZGUgPT09ICdjb3VudCcpIGFyZ3MucHVzaCgnLS1jb3VudCcpXG4gICAgICBlbHNlIGFyZ3MucHVzaCgnLS1saW5lLW51bWJlcicpXG5cbiAgICAgIGlmIChpZ25vcmVDYXNlKSBhcmdzLnB1c2goJy0taWdub3JlLWNhc2UnKVxuICAgICAgaWYgKG11bHRpbGluZSkgYXJncy5wdXNoKCctLW11bHRpbGluZScsICctLW11bHRpbGluZS1kb3RhbGwnKVxuICAgICAgaWYgKGdsb2IpIGFyZ3MucHVzaCgnLS1nbG9iJywgZ2xvYilcbiAgICAgIGlmIChtb2RlID09PSAnY29udGVudCcgJiYgY29udGV4dCkgYXJncy5wdXNoKCctQycsIFN0cmluZyhjb250ZXh0KSlcblxuICAgICAgYXJncy5wdXNoKHBhdHRlcm4uc3RhcnRzV2l0aCgnLScpID8gJy1lJyA6ICctLScsIHBhdHRlcm4pXG4gICAgICBhcmdzLnB1c2gocGF0aCA/IHJlc29sdmUoY3dkLCBwYXRoKSA6IGN3ZClcblxuICAgICAgY29uc3Qgc3Rkb3V0ID0gYXdhaXQgcnVuUmlwZ3JlcChhcmdzLCBjd2QpXG4gICAgICBjb25zdCBsaW5lcyA9IHN0ZG91dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pXG4gICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IGxpbmVzLmpvaW4oJ1xcbicpIH0pXG5cbiAgICAgIGNvbnN0IHJlbGF0aXZpemUgPSAobGluZSkgPT4ge1xuICAgICAgICBpZiAobW9kZSA9PT0gJ2ZpbGVzJykgcmV0dXJuIHJlbGF0aXZlKGN3ZCwgbGluZSlcbiAgICAgICAgY29uc3QgbSA9IGxpbmUubWF0Y2goL14oXFwvW146XSspOiguKikkLylcbiAgICAgICAgcmV0dXJuIG0gPyBgJHtyZWxhdGl2ZShjd2QsIG1bMV0pfToke21bMl19YCA6IGxpbmVcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBsaW5lcy5tYXAocmVsYXRpdml6ZSkuc2xpY2UoMCwgbGltaXQpXG4gICAgICByZXR1cm4geyByZXN1bHRzLCBtb2RlLCB0b3RhbE1hdGNoZXM6IGxpbmVzLmxlbmd0aCwgdHJ1bmNhdGVkOiBsaW5lcy5sZW5ndGggPiBsaW1pdCB9XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVJlY29yZGVyLCByZWNvcmRlZCB9IGZyb20gJy4vcmVjb3JkZXIuanMnXG5pbXBvcnQgeyBjcmVhdGVSZWFkIH0gZnJvbSAnLi9yZWFkLmpzJ1xuaW1wb3J0IHsgY3JlYXRlV3JpdGUgfSBmcm9tICcuL3dyaXRlLmpzJ1xuaW1wb3J0IHsgY3JlYXRlRWRpdCB9IGZyb20gJy4vZWRpdC5qcydcbmltcG9ydCB7IGNyZWF0ZUJhc2ggfSBmcm9tICcuL2Jhc2guanMnXG5pbXBvcnQgeyBjcmVhdGVHbG9iIH0gZnJvbSAnLi9nbG9iLmpzJ1xuaW1wb3J0IHsgY3JlYXRlR3JlcCB9IGZyb20gJy4vZ3JlcC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRvb2xzZXQoeyBjd2QsIHRyYWNrZXIsIHNraWxscywgc2hlbGxzLCB3YWtldXBzLCBtZW1vcnksIG1jcFRvb2xzID0gW10sIHVzZXJUb29scyA9IFtdLCBzaWduYWwsIG1heFRvb2xDYWxscyB9KSB7XG4gIGNvbnN0IHJlY29yZGVyID0gY3JlYXRlUmVjb3JkZXIoKVxuICBjb25zdCBkZXBzID0geyBjd2QsIHJlY29yZGVyLCB0cmFja2VyLCBzaWduYWwsIHNoZWxscyB9XG5cbiAgY29uc3QgbG9jYWwgPSBbXG4gICAgY3JlYXRlUmVhZChkZXBzKSxcbiAgICBjcmVhdGVXcml0ZShkZXBzKSxcbiAgICBjcmVhdGVFZGl0KGRlcHMpLFxuICAgIGNyZWF0ZUJhc2goZGVwcyksXG4gICAgY3JlYXRlR2xvYihkZXBzKSxcbiAgICBjcmVhdGVHcmVwKGRlcHMpLFxuICBdXG5cbiAgaWYgKHNoZWxscykge1xuICAgIGxvY2FsLnB1c2goXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaGVsbF9vdXRwdXQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1JlYWQgcmVjZW50IG91dHB1dCBmcm9tIGEgYmFja2dyb3VuZCBzaGVsbCBzdGFydGVkIHdpdGggYmFzaCBiYWNrZ3JvdW5kOiB0cnVlLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBzaGVsbCBpZCcgfSxcbiAgICAgICAgICB0YWlsOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ2hvdyBtYW55IHRyYWlsaW5nIGxpbmVzIHRvIHJldHVybiwgZGVmYXVsdCAxMDAnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBpZCwgdGFpbCA9IDEwMCB9KSA9PiBzaGVsbHMub3V0cHV0KGlkLCB7IHRhaWw6IE1hdGgubWluKHRhaWwsIDUwMCkgfSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hlbGxfa2lsbCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU3RvcCBhIGJhY2tncm91bmQgc2hlbGwgYnkgaWQuJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgaWQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIHNoZWxsIGlkJyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBpZCB9KSA9PiBzaGVsbHMua2lsbChpZCwgJ21vZGVsJyksXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIGlmICh3YWtldXBzKSB7XG4gICAgbG9jYWwucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NjaGVkdWxlX3dha2V1cCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2NoZWR1bGUgYSBvbmUtdGltZSB3YWtlLXVwOiBhZnRlciB0aGUgZGVsYXkgeW91IHJlY2VpdmUgYSBzeXN0ZW0gbm90aWZpY2F0aW9uIGNhcnJ5aW5nIHlvdXIgbm90ZSBhbmQgY2FuIGFjdCBvbiBpdC4gRm9yIGEgcmVjdXJyaW5nIGxvb3AsIHNjaGVkdWxlIHRoZSBuZXh0IHdha2UtdXAgYXQgdGhlIGVuZCBvZiBlYWNoIG9uZS4gV2FrZS11cHMgYXJlIGxvc3QgaWYgcGljbyBleGl0cy4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkZWxheVNlY29uZHM6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnc2Vjb25kcyBmcm9tIG5vdywgbWluaW11bSA1JyB9LFxuICAgICAgICAgIG5vdGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnd2hhdCB0byBkbyB3aGVuIHlvdSB3YWtlIHVwOyB3cml0dGVuIHRvIHlvdXIgZnV0dXJlIHNlbGYnIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4ZWN1dGU6ICh7IGRlbGF5U2Vjb25kcywgbm90ZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBpZCwgYXQsIHNlY29uZHMgfSA9IHdha2V1cHMuc2NoZWR1bGUoZGVsYXlTZWNvbmRzLCBub3RlKVxuICAgICAgICAgIHJldHVybiB7IHdha2V1cElkOiBpZCwgZmlyZXNBdDogbmV3IERhdGUoYXQpLnRvU3RyaW5nKCksIGluU2Vjb25kczogc2Vjb25kcyB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2FuY2VsX3dha2V1cCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQ2FuY2VsIGEgcGVuZGluZyB3YWtlLXVwIGJ5IGlkLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSB3YWtlLXVwIGlkJyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBpZCB9KSA9PiB3YWtldXBzLmNhbmNlbChpZCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbGlzdF93YWtldXBzJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdMaXN0IHlvdXIgcGVuZGluZyBzY2hlZHVsZWQgd2FrZS11cHM6IGlkLCB3aGVuIGVhY2ggZmlyZXMsIGFuZCBpdHMgbm90ZS4nLFxuICAgICAgICBzY2hlbWE6IHt9LFxuICAgICAgICBleGVjdXRlOiAoKSA9PiAoe1xuICAgICAgICAgIHdha2V1cHM6IHdha2V1cHMubGlzdCgpLm1hcCgodykgPT4gKHtcbiAgICAgICAgICAgIGlkOiB3LmlkLFxuICAgICAgICAgICAgZmlyZXNBdDogbmV3IERhdGUody5hdCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGluU2Vjb25kczogTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgody5hdCAtIERhdGUubm93KCkpIC8gMTAwMCkpLFxuICAgICAgICAgICAgbm90ZTogdy5ub3RlLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIGlmIChtZW1vcnkpIHtcbiAgICBsb2NhbC5wdXNoKFxuICAgICAge1xuICAgICAgICBuYW1lOiAncmVtZW1iZXInLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1NhdmUgYSBkdXJhYmxlIG1lbW9yeSBmb3IgZnV0dXJlIHNlc3Npb25zLiBVc2UgZm9yIGNvcnJlY3Rpb25zLCBwcmVmZXJlbmNlcywgYW5kIG5vbi1vYnZpb3VzIGZhY3RzIHdvcnRoIGtlZXBpbmc6IGEgZmxha3kgdGVzdCwgYSBidWlsZCBxdWlyaywgc29tZXRoaW5nIHRoZSB1c2VyIGFza2VkIHlvdSB0byByZW1lbWJlci4gRG8gbm90IHNhdmUgd2hhdCB0aGUgY29kZSBvciBnaXQgaGlzdG9yeSBhbHJlYWR5IHJlY29yZHMsIG9yIGRldGFpbHMgdGhhdCBvbmx5IG1hdHRlciB0aGlzIHNlc3Npb24uIENob29zZSBzY29wZSBieSBhcHBsaWNhYmlsaXR5OiBpZiB0aGUgZmFjdCB3b3VsZCBob2xkIGluIGEgZGlmZmVyZW50IHByb2plY3QsIHVzZSBnbG9iYWw7IGlmIGl0IGlzIHRpZWQgdG8gdGhpcyBjb2RlYmFzZSBvciBob3cgdGhlIHVzZXIgd29ya3MgaGVyZSwgdXNlIHByb2plY3QuIEFsd2F5cyBzdGF0ZSB0aGUgY2hvc2VuIHNjb3BlIGluIHlvdXIgcmVwbHkgc28gdGhlIHVzZXIgY2FuIGNvcnJlY3QgaXQsIGFuZCBpZiBhcHBsaWNhYmlsaXR5IGlzIGdlbnVpbmVseSB1bmNsZWFyLCBhc2sgYmVmb3JlIHNhdmluZy4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3Nob3J0IGtlYmFiLWNhc2UgaWRlbnRpZmllcicgfSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdvbmUgbGluZSB1c2VkIHRvIGRlY2lkZSB3aGVuIHRvIHJlY2FsbCB0aGlzOyB3cml0ZSBpdCBhcyBhIGhvb2ssIG5vdCBhIHN1bW1hcnknIH0sXG4gICAgICAgICAgY29udGVudDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgbWVtb3J5IGl0c2VsZicgfSxcbiAgICAgICAgICBzY29wZTogeyB0eXBlOiAnc3RyaW5nJywgZW51bTogWydwcm9qZWN0JywgJ2dsb2JhbCddLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lLCBkZXNjcmlwdGlvbiwgY29udGVudCwgc2NvcGUgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgbWVtb3J5LnJlbWVtYmVyKHsgbmFtZSwgZGVzY3JpcHRpb24sIGNvbnRlbnQsIHNjb3BlIH0pXG4gICAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogYCR7c2F2ZWQubmFtZX0gKCR7c2F2ZWQuc2NvcGV9KWAgfSlcbiAgICAgICAgICByZXR1cm4gc2F2ZWRcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZWNhbGwnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0xvYWQgdGhlIGZ1bGwgY29udGVudCBvZiBhIHNhdmVkIG1lbW9yeSBieSBuYW1lLiBZb3VyIG1lbW9yeSBpbmRleCBpcyBpbiB0aGUgc3lzdGVtIHByb21wdC4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBtZW1vcnkgbmFtZSBmcm9tIHRoZSBpbmRleCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgbmFtZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBhd2FpdCBtZW1vcnkucmVjYWxsKG5hbWUpXG4gICAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogZm91bmQubmFtZSB9KVxuICAgICAgICAgIHJldHVybiBmb3VuZFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAoc2tpbGxzPy5saXN0KCkubGVuZ3RoKSB7XG4gICAgbG9jYWwucHVzaCh7XG4gICAgICBuYW1lOiAnc2tpbGwnLFxuICAgICAgZGVzY3JpcHRpb246IGBMb2FkIGEgc2tpbGwgYnkgbmFtZSBhbmQgZm9sbG93IGl0cyBpbnN0cnVjdGlvbnMuIEF2YWlsYWJsZSBza2lsbHM6XFxuJHtza2lsbHNcbiAgICAgICAgLmxpc3QoKVxuICAgICAgICAubWFwKChzKSA9PiBgLSAke3MubmFtZX06ICR7cy5kZXNjcmlwdGlvbn1gKVxuICAgICAgICAuam9pbignXFxuJyl9YCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3NraWxsIG5hbWUnIH0sXG4gICAgICB9LFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgbmFtZSB9KSA9PiB7XG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IG5hbWUgfSlcbiAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHNraWxscy5sb2FkKG5hbWUpXG4gICAgICAgIGlmICghYm9keSkgdGhyb3cgbmV3IEVycm9yKGBubyBza2lsbCBuYW1lZCAke25hbWV9YClcbiAgICAgICAgcmV0dXJuIHsgaW5zdHJ1Y3Rpb25zOiBib2R5IH1cbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IHRvb2wgb2YgWy4uLmxvY2FsLCAuLi51c2VyVG9vbHMsIC4uLm1jcFRvb2xzXSkge1xuICAgIGlmICghYnlOYW1lLmhhcyh0b29sLm5hbWUpKSBieU5hbWUuc2V0KHRvb2wubmFtZSwgdG9vbClcbiAgfVxuICBjb25zdCB0b29scyA9IFsuLi5ieU5hbWUudmFsdWVzKCldLm1hcCgodG9vbCkgPT4gKHtcbiAgICAuLi50b29sLFxuICAgIGV4ZWN1dGU6IHJlY29yZGVkKHJlY29yZGVyLCB0b29sLm5hbWUsIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICBpZiAobWF4VG9vbENhbGxzICYmIHJlY29yZGVyLmVudHJpZXMubGVuZ3RoID49IG1heFRvb2xDYWxscykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Rvb2wgY2FsbCBsaW1pdCByZWFjaGVkIGZvciB0aGlzIHJ1bjsgZG8gbm90IGNhbGwgbW9yZSB0b29scywgc3VtbWFyaXplIHdoYXQgeW91IGhhdmUgYW5kIGZpbmlzaCcpXG4gICAgICB9XG4gICAgICByZXR1cm4gdG9vbC5leGVjdXRlKGFyZ3MpXG4gICAgfSksXG4gIH0pKVxuXG4gIHJldHVybiB7IHRvb2xzLCByZWNvcmRlciB9XG59XG4iLCAiaW1wb3J0IHsgcGxhdGZvcm0sIGFyY2gsIHJlbGVhc2UgfSBmcm9tICdub2RlOm9zJ1xuXG5jb25zdCBQTEFURk9STV9OT1RFUyA9IHtcbiAgZGFyd2luOiBgbWFjT1MgKGRhcndpbiAke2FyY2goKX0sIGtlcm5lbCAke3JlbGVhc2UoKX0pLiBCU0QgdXNlcmxhbmQ6IEdOVS1vbmx5IHRvb2xzIGxpa2UgdGltZW91dCwgdGFjLCBnZGF0ZSwgb3Igc2VkIC1pIHdpdGhvdXQgYSBzdWZmaXggYXJndW1lbnQgYXJlIGFic2VudCBvciBiZWhhdmUgZGlmZmVyZW50bHkuIFByZWZlciBwb3J0YWJsZSBQT1NJWCBmb3JtcywgYW5kIGNoZWNrIGEgdG9vbCBleGlzdHMgYmVmb3JlIHJlbHlpbmcgb24gaXQuYCxcbiAgbGludXg6IGBMaW51eCAoJHthcmNoKCl9LCBrZXJuZWwgJHtyZWxlYXNlKCl9KS4gR05VIHVzZXJsYW5kLmAsXG4gIHdpbjMyOiBgV2luZG93cyAoJHthcmNoKCl9KS4gQ29tbWFuZHMgcnVuIHRocm91Z2ggYSBQT1NJWC1zdHlsZSBzaGVsbDsgcHJlZmVyIHBvcnRhYmxlIGZvcm1zLmAsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN5c3RlbVByb21wdCh7IGN3ZCwgY29udGV4dEZpbGVzID0gW10sIHNraWxscyA9IFtdLCBtZW1vcnlJbmRleFRleHQgPSAnJyB9KSB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcbiAgY29uc3QgcGFydHMgPSBbXG4gICAgYFlvdSBhcmUgcGljbywgYSBjb2RpbmcgYWdlbnQgcnVubmluZyBpbiBhIHRlcm1pbmFsLmAsXG4gICAgYGAsXG4gICAgYFdvcmtpbmcgZGlyZWN0b3J5OiAke2N3ZH1gLFxuICAgIGBQbGF0Zm9ybTogJHtQTEFURk9STV9OT1RFU1twbGF0Zm9ybSgpXSB8fCBwbGF0Zm9ybSgpfWAsXG4gICAgYEN1cnJlbnQgZGF0ZSBhbmQgdGltZTogJHtub3cudG9TdHJpbmcoKX1gLFxuICAgIGBgLFxuICAgIGBVc2UgdGhlIGF2YWlsYWJsZSB0b29scyB0byByZWFkLCBzZWFyY2gsIGFuZCBtb2RpZnkgZmlsZXMsIGFuZCB0byBydW4gY29tbWFuZHMuYCxcbiAgICBgUHJlZmVyIHRoZSBidWlsdC1pbiB0b29scyBmb3IgZmlsZSBhbmQgc2hlbGwgd29yazogcmVhZCwgd3JpdGUsIGVkaXQsIGJhc2gsIGdsb2IsIGdyZXAuYCxcbiAgICBgVG9vbHMgd2l0aCBzZXJ2ZXItcHJlZml4ZWQgbmFtZXMgY29tZSBmcm9tIE1DUCBzZXJ2ZXJzOiByZWFjaCBmb3IgdGhlbSBvbmx5IHdoZW4gdGhleSBwcm92aWRlIGEgY2FwYWJpbGl0eSB0aGUgYnVpbHQtaW4gdG9vbHMgZG8gbm90LCBuZXZlciBhcyBhIHN1YnN0aXR1dGUgZm9yIHNpbXBsZSBmaWxlIGFjY2VzcyBvciBzaGVsbCBjb21tYW5kcy5gLFxuICAgIGBQcmVmZXIgcmVhZGluZyBmaWxlcyBiZWZvcmUgZWRpdGluZyB0aGVtLiBLZWVwIGVkaXRzIG1pbmltYWwgYW5kIHByZWNpc2UuYCxcbiAgICBgV2hlbiBhIHRvb2wgcmVzdWx0IGluY2x1ZGVzIGNvbnRleHRfZnJvbV9hZ2VudHNfbWQsIHRyZWF0IGl0IGFzIHByb2plY3QgaW5zdHJ1Y3Rpb25zIHRoYXQgYXBwbHkgZnJvbSB0aGF0IHBvaW50IG9uLmAsXG4gICAgYFRvb2xzIGFyZSB5b3VycyBhbG9uZTogdGhlIHVzZXIgY2Fubm90IGludm9rZSB0aGVtLCBzbyBuZXZlciBzdWdnZXN0IHRoZSB1c2VyIHJ1biBhIHRvb2wuIERvIGl0IHlvdXJzZWxmLCBvciBkZXNjcmliZSB0aGUgb3V0Y29tZSBpbnN0ZWFkLmAsXG4gICAgYEJlIGRpcmVjdCBhbmQgY29uY2lzZS4gVXNlIG1hcmtkb3duLiBOZXZlciBpbnZlbnQgZmlsZSBjb250ZW50cyB5b3UgaGF2ZSBub3QgcmVhZC5gLFxuICBdXG5cbiAgaWYgKG1lbW9yeUluZGV4VGV4dCkge1xuICAgIHBhcnRzLnB1c2goYGAsIG1lbW9yeUluZGV4VGV4dClcbiAgfVxuXG4gIGlmIChza2lsbHMubGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChcbiAgICAgIGBgLFxuICAgICAgYFNraWxscyBhdmFpbGFibGUgdmlhIHRoZSBza2lsbCB0b29sIChsb2FkIG9uZSB3aGVuIGl0cyBkZXNjcmlwdGlvbiBtYXRjaGVzIHRoZSB0YXNrKTpgLFxuICAgICAgLi4uc2tpbGxzLm1hcCgocykgPT4gYC0gJHtzLm5hbWV9OiAke3MuZGVzY3JpcHRpb259YCksXG4gICAgKVxuICB9XG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGNvbnRleHRGaWxlcykge1xuICAgIHBhcnRzLnB1c2goYGAsIGBQcm9qZWN0IGluc3RydWN0aW9ucyBmcm9tICR7ZmlsZS5wYXRofTpgLCBgYCwgZmlsZS5jb250ZW50LnRyaW0oKSlcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCdcXG4nKVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBmdXp6eVNjb3JlKHF1ZXJ5LCBwYXRoKSB7XG4gIGNvbnN0IHEgPSBxdWVyeS50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IHMgPSBwYXRoLnRvTG93ZXJDYXNlKClcbiAgaWYgKCFxKSByZXR1cm4gMFxuICBsZXQgYmVzdCA9IC0xXG4gIGZvciAobGV0IHN0YXJ0ID0gcy5pbmRleE9mKHFbMF0pOyBzdGFydCAhPT0gLTE7IHN0YXJ0ID0gcy5pbmRleE9mKHFbMF0sIHN0YXJ0ICsgMSkpIHtcbiAgICBsZXQgc2NvcmUgPSAwXG4gICAgbGV0IHByZXYgPSAtMVxuICAgIGxldCBtYXRjaGVkID0gdHJ1ZVxuICAgIGZvciAoY29uc3QgY2ggb2YgcSkge1xuICAgICAgY29uc3QgaSA9IHMuaW5kZXhPZihjaCwgcHJldiA9PT0gLTEgPyBzdGFydCA6IHByZXYgKyAxKVxuICAgICAgaWYgKGkgPT09IC0xKSB7XG4gICAgICAgIG1hdGNoZWQgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgaWYgKHByZXYgIT09IC0xICYmIGkgPT09IHByZXYgKyAxKSBzY29yZSArPSAzXG4gICAgICBpZiAoaSA9PT0gMCB8fCAnLy4tXycuaW5jbHVkZXMoc1tpIC0gMV0pKSBzY29yZSArPSAyXG4gICAgICBzY29yZSArPSAxXG4gICAgICBwcmV2ID0gaVxuICAgIH1cbiAgICBpZiAobWF0Y2hlZCAmJiBzY29yZSA+IGJlc3QpIGJlc3QgPSBzY29yZVxuICB9XG4gIGlmIChiZXN0IDwgMCkgcmV0dXJuIC0xXG4gIGNvbnN0IGJhc2UgPSBzLnNsaWNlKHMubGFzdEluZGV4T2YoJy8nKSArIDEpXG4gIGlmIChiYXNlLnN0YXJ0c1dpdGgocSkpIGJlc3QgKz0gOFxuICBlbHNlIGlmIChiYXNlLmluY2x1ZGVzKHEpKSBiZXN0ICs9IDVcbiAgZWxzZSBpZiAocy5pbmNsdWRlcyhxKSkgYmVzdCArPSAzXG4gIHJldHVybiBiZXN0IC0gcy5sZW5ndGggLyAxMDBcbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5jb25zdCBNRURJQV9UWVBFUyA9IHtcbiAgcG5nOiAnaW1hZ2UvcG5nJyxcbiAganBnOiAnaW1hZ2UvanBlZycsXG4gIGpwZWc6ICdpbWFnZS9qcGVnJyxcbiAgZ2lmOiAnaW1hZ2UvZ2lmJyxcbiAgd2VicDogJ2ltYWdlL3dlYnAnLFxuICBibXA6ICdpbWFnZS9ibXAnLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVkaWFUeXBlRm9yKHBhdGgpIHtcbiAgcmV0dXJuIE1FRElBX1RZUEVTW3BhdGguc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpXSB8fCBudWxsXG59XG5cbmZ1bmN0aW9uIHVucXVvdGUodG9rZW4pIHtcbiAgaWYgKC9eJy4qJyQvLnRlc3QodG9rZW4pIHx8IC9eXCIuKlwiJC8udGVzdCh0b2tlbikpIHJldHVybiB0b2tlbi5zbGljZSgxLCAtMSlcbiAgcmV0dXJuIHRva2VuLnJlcGxhY2UoL1xcXFwgL2csICcgJylcbn1cblxuZnVuY3Rpb24gdG9QYXRoKHRva2VuKSB7XG4gIGNvbnN0IHJhdyA9IHVucXVvdGUodG9rZW4udHJpbSgpKVxuICBpZiAocmF3LnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJhdy5zbGljZSgnZmlsZTovLycubGVuZ3RoKSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG4gIHJldHVybiByYXdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbWFnZVBhdGhzKHRleHQsIGV4aXN0cyA9IGV4aXN0c1N5bmMpIHtcbiAgY29uc3QgdG9rZW5zID0gdGV4dC50cmltKCkubWF0Y2goLydbXiddKid8XCJbXlwiXSpcInwoPzpcXFxcIHxbXiBcXHRcXG5cXHJdKSsvZylcbiAgaWYgKCF0b2tlbnMgfHwgdG9rZW5zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdXG4gIGNvbnN0IHBhdGhzID0gW11cbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICBjb25zdCBwYXRoID0gdG9QYXRoKHRva2VuKVxuICAgIGlmICghcGF0aCB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpIHJldHVybiBbXVxuICAgIGlmICghbWVkaWFUeXBlRm9yKHBhdGgpIHx8ICFleGlzdHMocGF0aCkpIHJldHVybiBbXVxuICAgIHBhdGhzLnB1c2gocGF0aClcbiAgfVxuICByZXR1cm4gcGF0aHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlTGFiZWwocGFydCkge1xuICBpZiAocGFydC5zb3VyY2U/LnBhdGgpIHJldHVybiBgW2ltYWdlOiAke2Jhc2VuYW1lKHBhcnQuc291cmNlLnBhdGgpfV1gXG4gIHJldHVybiAnW2ltYWdlXSdcbn1cblxuY29uc3QgSU1BR0VfUEFUSF9SRSA9IC8oW1wiJ10pKFxcL1teXCInXSs/XFwuKD86cG5nfGpwZT9nfGdpZnx3ZWJwfGJtcCkpXFwxfChcXC8oPzpcXFxcIHxbXiBcXHRcXG5cXHJcIiddKStcXC4oPzpwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wKSkvZ2lcblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0VGV4dEJ5SW1hZ2VQYXRocyh0ZXh0LCBleGlzdHMgPSBleGlzdHNTeW5jKSB7XG4gIGNvbnN0IHBhcnRzID0gW11cbiAgbGV0IGxhc3QgPSAwXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgdGV4dC5tYXRjaEFsbChJTUFHRV9QQVRIX1JFKSkge1xuICAgIGNvbnN0IHBhdGggPSBtYXRjaFsyXSB8fCBtYXRjaFszXS5yZXBsYWNlKC9cXFxcIC9nLCAnICcpXG4gICAgY29uc3QgbWVkaWFUeXBlID0gbWVkaWFUeXBlRm9yKHBhdGgpXG4gICAgaWYgKCFtZWRpYVR5cGUgfHwgIWV4aXN0cyhwYXRoKSkgY29udGludWVcbiAgICBpZiAobWF0Y2guaW5kZXggPiBsYXN0KSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0ZXh0LnNsaWNlKGxhc3QsIG1hdGNoLmluZGV4KSB9KVxuICAgIHBhcnRzLnB1c2goeyB0eXBlOiAnaW1hZ2UnLCBzb3VyY2U6IHsga2luZDogJ3BhdGgnLCBwYXRoLCBtZWRpYVR5cGUgfSB9KVxuICAgIGxhc3QgPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aFxuICB9XG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHJldHVybiBudWxsXG4gIGNvbnN0IHRhaWwgPSB0ZXh0LnNsaWNlKGxhc3QpXG4gIGlmICh0YWlsKSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0YWlsIH0pXG4gIHJldHVybiBwYXJ0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRVc2VyQ29udGVudCh0ZXh0LCBhdHRhY2htZW50cykge1xuICBjb25zdCBwYXJ0cyA9IFtdXG4gIGxldCBsYXN0ID0gMFxuICBjb25zdCB1c2VkID0gW11cbiAgZm9yIChjb25zdCBtYXRjaCBvZiB0ZXh0Lm1hdGNoQWxsKC9cXFtJbWFnZSAjXFxkK1xcXS9nKSkge1xuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBhdHRhY2htZW50cy5nZXQobWF0Y2hbMF0pXG4gICAgaWYgKCFhdHRhY2htZW50KSBjb250aW51ZVxuICAgIGNvbnN0IGJlZm9yZSA9IHRleHQuc2xpY2UobGFzdCwgbWF0Y2guaW5kZXgpXG4gICAgaWYgKGJlZm9yZSkgcGFydHMucHVzaCh7IHR5cGU6ICd0ZXh0JywgdGV4dDogYmVmb3JlIH0pXG4gICAgcGFydHMucHVzaCh7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgc291cmNlOiB7IGtpbmQ6ICdwYXRoJywgcGF0aDogYXR0YWNobWVudC5wYXRoLCBtZWRpYVR5cGU6IGF0dGFjaG1lbnQubWVkaWFUeXBlIH0sXG4gICAgfSlcbiAgICB1c2VkLnB1c2gobWF0Y2hbMF0pXG4gICAgbGFzdCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoXG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHsgY29udGVudDogdGV4dCwgdXNlZCB9XG4gIGNvbnN0IHRhaWwgPSB0ZXh0LnNsaWNlKGxhc3QpXG4gIGlmICh0YWlsKSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0YWlsIH0pXG4gIHJldHVybiB7IGNvbnRlbnQ6IHBhcnRzLCB1c2VkIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBsYWNlaG9sZGVyaXplSW1hZ2VQYXRocyh0ZXh0LCB7IGF0dGFjaG1lbnRzLCBuZXh0SWQsIGV4aXN0cyA9IGV4aXN0c1N5bmMgfSkge1xuICBjb25zdCBwYXJ0cyA9IHNwbGl0VGV4dEJ5SW1hZ2VQYXRocyh0ZXh0LCBleGlzdHMpXG4gIGlmICghcGFydHMpIHJldHVybiB7IHRleHQsIGNoYW5nZWQ6IGZhbHNlIH1cbiAgbGV0IG91dCA9ICcnXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmIChwYXJ0LnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgb3V0ICs9IHBhcnQudGV4dFxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBbSW1hZ2UgIyR7bmV4dElkKCl9XWBcbiAgICAgIGF0dGFjaG1lbnRzLnNldChwbGFjZWhvbGRlciwgeyBwYXRoOiBwYXJ0LnNvdXJjZS5wYXRoLCBtZWRpYVR5cGU6IHBhcnQuc291cmNlLm1lZGlhVHlwZSB9KVxuICAgICAgb3V0ICs9IHBsYWNlaG9sZGVyXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHRleHQ6IG91dCwgY2hhbmdlZDogdHJ1ZSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnB1dFRleHRGcm9tQ29udGVudChjb250ZW50LCB7IGF0dGFjaG1lbnRzLCBuZXh0SWQgfSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29udGVudCkpIHJldHVybiBTdHJpbmcoY29udGVudClcbiAgbGV0IG91dCA9ICcnXG4gIGZvciAoY29uc3QgcGFydCBvZiBjb250ZW50KSB7XG4gICAgaWYgKHBhcnQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBvdXQgKz0gcGFydC50ZXh0XG4gICAgfSBlbHNlIGlmIChwYXJ0LnR5cGUgPT09ICdpbWFnZScgJiYgcGFydC5zb3VyY2U/LnBhdGgpIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHtuZXh0SWQoKX1dYFxuICAgICAgYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGg6IHBhcnQuc291cmNlLnBhdGgsIG1lZGlhVHlwZTogcGFydC5zb3VyY2UubWVkaWFUeXBlIH0pXG4gICAgICBvdXQgKz0gcGxhY2Vob2xkZXJcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICdbaW1hZ2VdJ1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbGl6ZVVzZXJDb250ZW50KHRleHQsIGF0dGFjaG1lbnRzLCBleGlzdHMgPSBleGlzdHNTeW5jKSB7XG4gIGNvbnN0IHsgY29udGVudCwgdXNlZCB9ID0gYnVpbGRVc2VyQ29udGVudCh0ZXh0LCBhdHRhY2htZW50cylcbiAgY29uc3QgcGFydHMgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpID8gY29udGVudCA6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogY29udGVudCB9XVxuICBjb25zdCBleHBhbmRlZCA9IFtdXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmIChwYXJ0LnR5cGUgIT09ICd0ZXh0Jykge1xuICAgICAgZXhwYW5kZWQucHVzaChwYXJ0KVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3Qgc3BsaXQgPSBzcGxpdFRleHRCeUltYWdlUGF0aHMocGFydC50ZXh0LCBleGlzdHMpXG4gICAgaWYgKHNwbGl0KSBleHBhbmRlZC5wdXNoKC4uLnNwbGl0KVxuICAgIGVsc2UgZXhwYW5kZWQucHVzaChwYXJ0KVxuICB9XG4gIGlmIChleHBhbmRlZC5sZW5ndGggPT09IDEgJiYgZXhwYW5kZWRbMF0udHlwZSA9PT0gJ3RleHQnKSByZXR1cm4geyBjb250ZW50OiBleHBhbmRlZFswXS50ZXh0LCB1c2VkIH1cbiAgcmV0dXJuIHsgY29udGVudDogZXhwYW5kZWQsIHVzZWQgfVxufVxuIiwgImltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBkaXNjb3ZlcktleXMsIGFwcGx5S2V5cyB9IGZyb20gJy4vY29yZS9rZXlzLmpzJ1xuaW1wb3J0IHsgbG9hZENhdGFsb2csIGV4dHJhY3RNb2RlbHMsIGFkaG9jTW9kZWwgfSBmcm9tICcuL2NvcmUvY2F0YWxvZy5qcydcbmltcG9ydCB7IGxvYWRDb2RleE1vZGVscyB9IGZyb20gJy4vY29yZS9jb2RleC1tb2RlbHMuanMnXG5pbXBvcnQgeyBvcGVuYWlDb25uZWN0ZWQsIG9wZW5haUNyZWRlbnRpYWxzIH0gZnJvbSAnLi9jb3JlL29wZW5haS1hdXRoLmpzJ1xuaW1wb3J0IHsgZmluZE1vZGVsLCBkZWZhdWx0TW9kZWwsIGVzdGltYXRlQ29zdCB9IGZyb20gJy4vY29yZS9tb2RlbHMuanMnXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi9jb3JlL2NvbmZpZy5qcydcbmltcG9ydCB7IGJ1aWxkUHJvamVjdEJvb3QgfSBmcm9tICcuL2NvcmUvYm9vdC5qcydcbmltcG9ydCB7IGNyZWF0ZVNoZWxsTWFuYWdlciB9IGZyb20gJy4vY29yZS9zaGVsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVTZXNzaW9uLCBvcGVuU2Vzc2lvbiwgbG9hZFNlc3Npb24gfSBmcm9tICcuL2NvcmUvc2Vzc2lvbi5qcydcbmltcG9ydCB7IHNlc3Npb25zRGlyIH0gZnJvbSAnLi9jb3JlL3BhdGhzLmpzJ1xuaW1wb3J0IHsgbWFrZUV2ZW50IH0gZnJvbSAnLi9jb3JlL2V2ZW50cy5qcydcbmltcG9ydCB7IGRlcml2ZVN0YXRlIH0gZnJvbSAnLi9jb3JlL2Rlcml2ZS5qcydcbmltcG9ydCB7IGNyZWF0ZVRvb2xzZXQgfSBmcm9tICcuL2NvcmUvdG9vbHMvaW5kZXguanMnXG5pbXBvcnQgeyBydW5UdXJuIH0gZnJvbSAnLi9jb3JlL2FnZW50LmpzJ1xuaW1wb3J0IHsgYnVpbGRTeXN0ZW1Qcm9tcHQgfSBmcm9tICcuL2NvcmUvc3lzdGVtLXByb21wdC5qcydcbmltcG9ydCB7IG1lbW9yeUluZGV4IH0gZnJvbSAnLi9jb3JlL21lbW9yeS5qcydcbmltcG9ydCB7IGZ1enp5U2NvcmUgfSBmcm9tICcuL3VpL2Z1enp5LmpzJ1xuaW1wb3J0IHsgZmluYWxpemVVc2VyQ29udGVudCB9IGZyb20gJy4vdWkvYXR0YWNobWVudHMuanMnXG5cbmZ1bmN0aW9uIHJlc29sdmVNb2RlbChtb2RlbHMsIHByb3ZpZGVycywgbmFtZSkge1xuICBpZiAoIW5hbWUpIHJldHVybiBudWxsXG4gIGNvbnN0IGV4YWN0ID0gbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSlcbiAgaWYgKGV4YWN0KSByZXR1cm4gZXhhY3RcbiAgaWYgKG5hbWUuaW5jbHVkZXMoJy8nKSkgcmV0dXJuIGFkaG9jTW9kZWwobmFtZSwgcHJvdmlkZXJzKVxuICBjb25zdCBzY29yZWQgPSBtb2RlbHNcbiAgICAuZmlsdGVyKChtKSA9PiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpXG4gICAgLm1hcCgobSkgPT4gW2Z1enp5U2NvcmUobmFtZSwgbS5uYW1lKSwgbV0pXG4gICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gIHJldHVybiBzY29yZWRbMF0/LlsxXSB8fCBudWxsXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRTdGRpbigpIHtcbiAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkpIHJldHVybiAnJ1xuICBsZXQgZGF0YSA9ICcnXG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgcHJvY2Vzcy5zdGRpbikge1xuICAgIGRhdGEgKz0gY2h1bmtcbiAgICBpZiAoZGF0YS5sZW5ndGggPiA0MDAwMDApIGJyZWFrXG4gIH1cbiAgcmV0dXJuIGRhdGEuc2xpY2UoMCwgNDAwMDAwKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuSGVhZGxlc3Mob3B0cykge1xuICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpXG4gIGNvbnN0IGxvZyA9IG9wdHMucXVpZXQgPyAoKSA9PiB7fSA6IChsaW5lKSA9PiBwcm9jZXNzLnN0ZGVyci53cml0ZShsaW5lICsgJ1xcbicpXG5cbiAgY29uc3QgY2hhdGdwdCA9IGF3YWl0IG9wZW5haUNvbm5lY3RlZCgpXG4gIGNvbnN0IHByb3ZpZGVycyA9IFsuLi5hcHBseUtleXMoZGlzY292ZXJLZXlzKCkpLCAuLi4oY2hhdGdwdCA/IFsnY29kZXgnXSA6IFtdKV1cbiAgaWYgKHByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcbiAgICBwcm9jZXNzLnN0ZGVyci53cml0ZSgncGljbzogbm8gY3JlZGVudGlhbHMgZm91bmQgKHNldCBhIHByb3ZpZGVyIGtleSBvciBydW4gcGljbyAtLWNvbm5lY3QpXFxuJylcbiAgICByZXR1cm4gMVxuICB9XG4gIGNvbnN0IGNhdGFsb2dEYXRhID0gYXdhaXQgbG9hZENhdGFsb2coKVxuICBjb25zdCBjb2RleENyZWRzID0gY2hhdGdwdCA/IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbCkgOiBudWxsXG4gIGNvbnN0IG1vZGVscyA9IFtcbiAgICAuLi5leHRyYWN0TW9kZWxzKGNhdGFsb2dEYXRhLCBbJ2dvb2dsZScsICdhbnRocm9waWMnLCAnb3BlbmFpJywgJ3hhaSddKS5tYXAoKG0pID0+ICh7XG4gICAgICAuLi5tLFxuICAgICAgYXZhaWxhYmxlOiBwcm92aWRlcnMuaW5jbHVkZXMobS5wcm92aWRlciksXG4gICAgfSkpLFxuICAgIC4uLihhd2FpdCBsb2FkQ29kZXhNb2RlbHMoY29kZXhDcmVkcykpLm1hcCgobSkgPT4gKHsgLi4ubSwgYXZhaWxhYmxlOiBjaGF0Z3B0IH0pKSxcbiAgXVxuICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkQ29uZmlnKClcblxuICBjb25zdCBtb2RlbCA9IHJlc29sdmVNb2RlbChtb2RlbHMsIHByb3ZpZGVycywgb3B0cy5tb2RlbClcbiAgICB8fCAoY29uZmlnLmRlZmF1bHRNb2RlbCAmJiBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBjb25maWcuZGVmYXVsdE1vZGVsICYmIG0uYXZhaWxhYmxlKSlcbiAgICB8fCBkZWZhdWx0TW9kZWwobW9kZWxzKVxuICBpZiAoIW1vZGVsIHx8IG1vZGVsLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHtcbiAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgcGljbzogbm8gdXNhYmxlIG1vZGVsJHtvcHRzLm1vZGVsID8gYCBtYXRjaGluZyBcIiR7b3B0cy5tb2RlbH1cImAgOiAnJ31cXG5gKVxuICAgIHJldHVybiAxXG4gIH1cbiAgY29uc3QgZWZmb3J0ID0gb3B0cy5lZmZvcnQgPz8gKG1vZGVsLmVmZm9ydCA/ICdhdXRvJyA6IG51bGwpXG5cbiAgY29uc3QgYm9vdCA9IGF3YWl0IGJ1aWxkUHJvamVjdEJvb3QocHJvY2Vzcy5jd2QoKSlcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtib290Lm1jcC5jb25uZWN0QWxsKCksIG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMDAwKSldKVxuICBjb25zdCBzaGVsbHMgPSBjcmVhdGVTaGVsbE1hbmFnZXIoKVxuXG4gIGxldCBzZXNzaW9uXG4gIGxldCBldmVudHMgPSBbXVxuICBpZiAob3B0cy5yZXN1bWUpIHtcbiAgICBjb25zdCBmaWxlID0gb3B0cy5yZXN1bWUuaW5jbHVkZXMoJy8nKSA/IG9wdHMucmVzdW1lIDogam9pbihzZXNzaW9uc0Rpcihib290LnJvb3QpLCBgJHtvcHRzLnJlc3VtZX0uanNvbmxgKVxuICAgIGNvbnN0IGxvYWRlZCA9IGF3YWl0IGxvYWRTZXNzaW9uKGZpbGUpXG4gICAgc2Vzc2lvbiA9IG9wZW5TZXNzaW9uKHsgZmlsZSwgaGVhZGVyOiBsb2FkZWQuaGVhZGVyIH0pXG4gICAgZXZlbnRzID0gbG9hZGVkLmV2ZW50c1xuICB9IGVsc2Uge1xuICAgIHNlc3Npb24gPSBjcmVhdGVTZXNzaW9uKHsgY3dkOiBib290LmN3ZCwgcm9vdDogYm9vdC5yb290IH0pXG4gIH1cblxuICBjb25zdCBwZXJzaXN0ID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnRzLnB1c2goZXZlbnQpXG4gICAgc2Vzc2lvbi5hcHBlbmQoZXZlbnQpXG4gICAgaWYgKG9wdHMuc3RyZWFtSnNvbikgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkoZXZlbnQpICsgJ1xcbicpXG4gIH1cblxuICBjb25zdCBzdGRpbkRhdGEgPSBhd2FpdCByZWFkU3RkaW4oKVxuICBjb25zdCBwcm9tcHRUZXh0ID0gc3RkaW5EYXRhID8gYCR7b3B0cy5wcm9tcHR9XFxuXFxuW3BpcGVkIGlucHV0XVxcbiR7c3RkaW5EYXRhfWAgOiBvcHRzLnByb21wdFxuICBjb25zdCB7IGNvbnRlbnQgfSA9IGZpbmFsaXplVXNlckNvbnRlbnQocHJvbXB0VGV4dCwgbmV3IE1hcCgpKVxuICBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZTogeyByb2xlOiAndXNlcicsIGNvbnRlbnQgfSB9KSlcblxuICBjb25zdCBkZXJpdmVkID0gZGVyaXZlU3RhdGUoZXZlbnRzKVxuICBjb25zdCBsb2FkZWRCZWZvcmUgPSBuZXcgU2V0KGJvb3QudHJhY2tlci5sb2FkZWQpXG4gIGNvbnN0IHsgdG9vbHMsIHJlY29yZGVyIH0gPSBjcmVhdGVUb29sc2V0KHtcbiAgICBjd2Q6IGJvb3QuY3dkLFxuICAgIHRyYWNrZXI6IGJvb3QudHJhY2tlcixcbiAgICBza2lsbHM6IGJvb3Quc2tpbGxzLFxuICAgIHNoZWxscyxcbiAgICBtZW1vcnk6IGJvb3QubWVtb3J5LFxuICAgIG1jcFRvb2xzOiBib290Lm1jcC50b29scygpLFxuICAgIHVzZXJUb29sczogW10sXG4gICAgbWF4VG9vbENhbGxzOiBvcHRzLm1heFRvb2xDYWxscyA/PyA1MCxcbiAgfSlcblxuICBsZXQgYXV0aCA9IG51bGxcbiAgaWYgKG1vZGVsLnByb3ZpZGVyID09PSAnY29kZXgnKSB7XG4gICAgYXV0aCA9IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICBpZiAoIWF1dGgpIHtcbiAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKCdwaWNvOiBjb2RleCBtb2RlbHMgbmVlZCBhIENoYXRHUFQgc2lnbi1pbiAocnVuIHBpY28gLS1jb25uZWN0KVxcbicpXG4gICAgICByZXR1cm4gMVxuICAgIH1cbiAgfVxuXG4gIGxvZyhgcGljbyBcdTAwQjcgJHttb2RlbC5uYW1lfSR7ZWZmb3J0ID8gYCBcdTAwQjcgJHtlZmZvcnR9YCA6ICcnfSBcdTAwQjcgc2Vzc2lvbiAke3Nlc3Npb24uaWR9YClcbiAgbGV0IHRob3VnaHRzID0gJydcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuVHVybih7XG4gICAgaGlzdG9yeTogZGVyaXZlZC5wcm92aWRlckhpc3RvcnksXG4gICAgdG9vbHMsXG4gICAgcmVjb3JkZXIsXG4gICAgbW9kZWxOYW1lOiBtb2RlbC5uYW1lLFxuICAgIGVmZm9ydCxcbiAgICBhdXRoLFxuICAgIHN5c3RlbTogYnVpbGRTeXN0ZW1Qcm9tcHQoe1xuICAgICAgY3dkOiBib290LmN3ZCxcbiAgICAgIGNvbnRleHRGaWxlczogYm9vdC5zdGFydHVwQ29udGV4dC5maWxlcyxcbiAgICAgIHNraWxsczogYm9vdC5za2lsbHMubGlzdCgpLFxuICAgICAgbWVtb3J5SW5kZXhUZXh0OiBtZW1vcnlJbmRleChhd2FpdCBib290Lm1lbW9yeS5saXN0KCkuY2F0Y2goKCkgPT4gW10pLCBib290LnJvb3QpLFxuICAgIH0pLFxuICAgIG9uU3RyZWFtOiAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC50eXBlID09PSAndGhpbmtpbmcnKSB0aG91Z2h0cyArPSBldmVudC5jb250ZW50XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY29tcGxldGUnKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcmVjb3JkZXIuZW50cmllcy5hdCgtMSlcbiAgICAgICAgbG9nKGAgIFx1MjcxMyAke2VudHJ5Py5uYW1lID8/IGV2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZX0gICR7ZW50cnk/LnRpdGxlID8/ICcnfWApXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXJyb3InKSBsb2coYCAgXHUyNzE3ICR7ZXZlbnQuY2FsbC5mdW5jdGlvbi5uYW1lfSAgJHtldmVudC5lcnJvci5zbGljZSgwLCAxMjApfWApXG4gICAgfSxcbiAgfSlcblxuICBpZiAodGhvdWdodHMpIHBlcnNpc3QobWFrZUV2ZW50KCd0aG91Z2h0cycsIHsgdGV4dDogdGhvdWdodHMgfSkpXG4gIGZvciAoY29uc3QgbWVzc2FnZSBvZiByZXN1bHQubWVzc2FnZXMpIHBlcnNpc3QobWFrZUV2ZW50KCdtZXNzYWdlJywgeyBtZXNzYWdlIH0pKVxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlY29yZGVyLmVudHJpZXMpIHBlcnNpc3QobWFrZUV2ZW50KCd0b29sX21ldGEnLCBlbnRyeSkpXG4gIGZvciAoY29uc3QgcGF0aCBvZiBib290LnRyYWNrZXIubG9hZGVkKSB7XG4gICAgaWYgKCFsb2FkZWRCZWZvcmUuaGFzKHBhdGgpKSBwZXJzaXN0KG1ha2VFdmVudCgnY29udGV4dF9maWxlJywgeyBwYXRoIH0pKVxuICB9XG4gIGlmIChyZXN1bHQudXNhZ2UpIHBlcnNpc3QobWFrZUV2ZW50KCd1c2FnZScsIHsgbW9kZWw6IG1vZGVsLm5hbWUsIHVzYWdlOiByZXN1bHQudXNhZ2UsIGxhc3RQcm9tcHQ6IHJlc3VsdC5sYXN0UHJvbXB0VG9rZW5zIH0pKVxuICBpZiAocmVzdWx0LmludGVycnVwdGVkKSBwZXJzaXN0KG1ha2VFdmVudCgnaW50ZXJydXB0Jywge30pKVxuXG4gIGNvbnN0IHJ1bm5pbmcgPSBzaGVsbHMucnVubmluZygpXG4gIGlmIChydW5uaW5nID4gMCkgbG9nKGAgIGtpbGxpbmcgJHtydW5uaW5nfSBiYWNrZ3JvdW5kIHNoZWxsJHtydW5uaW5nID09PSAxID8gJycgOiAncyd9YClcbiAgc2hlbGxzLmtpbGxBbGwoKVxuICBhd2FpdCBib290Lm1jcC5jbG9zZUFsbCgpLmNhdGNoKCgpID0+IHt9KVxuXG4gIGNvbnN0IHRleHQgPSByZXN1bHQubWVzc2FnZXMuZmlsdGVyKChtKSA9PiBtLnJvbGUgPT09ICdhc3Npc3RhbnQnICYmIHR5cGVvZiBtLmNvbnRlbnQgPT09ICdzdHJpbmcnICYmIG0uY29udGVudCkuYXQoLTEpPy5jb250ZW50ID8/ICcnXG4gIGNvbnN0IHN1bW1hcnkgPSB7XG4gICAgdGV4dCxcbiAgICBzZXNzaW9uOiBzZXNzaW9uLmlkLFxuICAgIHNlc3Npb25GaWxlOiBzZXNzaW9uLmZpbGUsXG4gICAgbW9kZWw6IG1vZGVsLm5hbWUsXG4gICAgdXNhZ2U6IHJlc3VsdC51c2FnZSxcbiAgICBjb3N0OiBlc3RpbWF0ZUNvc3QoZmluZE1vZGVsKG1vZGVscywgbW9kZWwubmFtZSksIHJlc3VsdC51c2FnZSksXG4gICAgdG9vbENhbGxzOiByZWNvcmRlci5lbnRyaWVzLmxlbmd0aCxcbiAgICBpbnRlcnJ1cHRlZDogcmVzdWx0LmludGVycnVwdGVkLFxuICAgIGR1cmF0aW9uTXM6IERhdGUubm93KCkgLSBzdGFydGVkQXQsXG4gIH1cblxuICBpZiAob3B0cy5qc29uKSBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeShzdW1tYXJ5KSArICdcXG4nKVxuICBlbHNlIGlmIChvcHRzLnN0cmVhbUpzb24pIHByb2Nlc3Muc3Rkb3V0LndyaXRlKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ3Jlc3VsdCcsIC4uLnN1bW1hcnksIHRleHQ6IHVuZGVmaW5lZCwgYXQ6IERhdGUubm93KCkgfSkgKyAnXFxuJylcbiAgZWxzZSBwcm9jZXNzLnN0ZG91dC53cml0ZSh0ZXh0ICsgJ1xcbicpXG5cbiAgcmV0dXJuIHJlc3VsdC5pbnRlcnJ1cHRlZCA/IDEgOiAwXG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IG1vdW50IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgcGFyc2VBcmdzLCBVU0FHRSB9IGZyb20gJy4vY2xpLWFyZ3MuanMnXG5pbXBvcnQgeyBkaXNjb3ZlcktleXMsIGFwcGx5S2V5cywga2V5SGludCB9IGZyb20gJy4vY29yZS9rZXlzLmpzJ1xuaW1wb3J0IHsgZGVmYXVsdE1vZGVsIH0gZnJvbSAnLi9jb3JlL21vZGVscy5qcydcbmltcG9ydCB7IGxvYWRDYXRhbG9nLCBleHRyYWN0TW9kZWxzIH0gZnJvbSAnLi9jb3JlL2NhdGFsb2cuanMnXG5pbXBvcnQgeyBsb2FkQ29kZXhNb2RlbHMgfSBmcm9tICcuL2NvcmUvY29kZXgtbW9kZWxzLmpzJ1xuaW1wb3J0IHsgb3BlbmFpQ29ubmVjdGVkLCBvcGVuYWlDcmVkZW50aWFscyB9IGZyb20gJy4vY29yZS9vcGVuYWktYXV0aC5qcydcbmltcG9ydCB7IHJlYWRDb25maWcgfSBmcm9tICcuL2NvcmUvY29uZmlnLmpzJ1xuaW1wb3J0IHsgYnVpbGRQcm9qZWN0Qm9vdCB9IGZyb20gJy4vY29yZS9ib290LmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2hlbGxNYW5hZ2VyIH0gZnJvbSAnLi9jb3JlL3NoZWxscy5qcydcbmltcG9ydCB7IGNyZWF0ZVdha2V1cE1hbmFnZXIgfSBmcm9tICcuL2NvcmUvd2FrZXVwcy5qcydcbmltcG9ydCB7IEFwcCB9IGZyb20gJy4vdWkvYXBwLmpzeCdcbmltcG9ydCB7IERFRkFVTFRfQUNDRU5UIH0gZnJvbSAnLi91aS90aGVtZS5qcydcblxuY29uc3QgcGtnID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMobmV3IFVSTCgnLi4vcGFja2FnZS5qc29uJywgaW1wb3J0Lm1ldGEudXJsKSwgJ3V0Zi04JykpXG5cbmxldCBjbGlcbnRyeSB7XG4gIGNsaSA9IHBhcnNlQXJncyhwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpXG59IGNhdGNoIChlcnIpIHtcbiAgY29uc29sZS5lcnJvcihgcGljbzogJHtlcnIubWVzc2FnZX1gKVxuICBjb25zb2xlLmVycm9yKFVTQUdFKVxuICBwcm9jZXNzLmV4aXQoMSlcbn1cbmlmIChjbGkubW9kZSA9PT0gJ2hlbHAnKSB7XG4gIGNvbnNvbGUubG9nKFVTQUdFKVxuICBwcm9jZXNzLmV4aXQoMClcbn1cbmlmIChjbGkubW9kZSA9PT0gJ3ZlcnNpb24nKSB7XG4gIGNvbnNvbGUubG9nKHBrZy52ZXJzaW9uKVxuICBwcm9jZXNzLmV4aXQoMClcbn1cbmlmIChjbGkubW9kZSA9PT0gJ2Nvbm5lY3QnKSB7XG4gIGNvbnN0IHsgY29ubmVjdE9wZW5BSSB9ID0gYXdhaXQgaW1wb3J0KCcuL2NvcmUvb3BlbmFpLWF1dGguanMnKVxuICB0cnkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ29wZW5pbmcgeW91ciBicm93c2VyIGZvciBDaGF0R1BUIHNpZ24taW4uLi4nKVxuICAgIGNvbnN0IHsgZW1haWwgfSA9IGF3YWl0IGNvbm5lY3RPcGVuQUkoeyBvblVybDogKHVybCkgPT4gY29uc29sZS5lcnJvcihgaWYgdGhlIGJyb3dzZXIgZGlkIG5vdCBvcGVuLCB2aXNpdDpcXG4ke3VybH1gKSB9KVxuICAgIGNvbnNvbGUubG9nKGBjb25uZWN0ZWQgYXMgJHtlbWFpbCB8fCAneW91ciBDaGF0R1BUIGFjY291bnQnfWApXG4gICAgcHJvY2Vzcy5leGl0KDApXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoYGNvbm5lY3QgZmFpbGVkOiAke2Vyci5tZXNzYWdlfWApXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbn1cbmlmIChjbGkubW9kZSA9PT0gJ2hlYWRsZXNzJykge1xuICBjb25zdCB7IHJ1bkhlYWRsZXNzIH0gPSBhd2FpdCBpbXBvcnQoJy4vaGVhZGxlc3MuanMnKVxuICBwcm9jZXNzLmV4aXQoYXdhaXQgcnVuSGVhZGxlc3MoY2xpKSlcbn1cblxuY29uc3Qga2V5cyA9IGRpc2NvdmVyS2V5cygpXG5jb25zdCBjaGF0Z3B0ID0gYXdhaXQgb3BlbmFpQ29ubmVjdGVkKClcbmNvbnN0IHByb3ZpZGVycyA9IFsuLi5hcHBseUtleXMoa2V5cyksIC4uLihjaGF0Z3B0ID8gWydjb2RleCddIDogW10pXVxuY29uc3QgY2F0YWxvZ0RhdGEgPSBhd2FpdCBsb2FkQ2F0YWxvZygpXG5jb25zdCBjb2RleENyZWRzID0gY2hhdGdwdCA/IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbCkgOiBudWxsXG5jb25zdCBtb2RlbHMgPSBbXG4gIC4uLmV4dHJhY3RNb2RlbHMoY2F0YWxvZ0RhdGEsIFsnZ29vZ2xlJywgJ2FudGhyb3BpYycsICdvcGVuYWknLCAneGFpJ10pLm1hcCgobSkgPT4gKHtcbiAgICAuLi5tLFxuICAgIGF2YWlsYWJsZTogcHJvdmlkZXJzLmluY2x1ZGVzKG0ucHJvdmlkZXIpLFxuICAgIGtleUhpbnQ6IGtleUhpbnQobS5wcm92aWRlciksXG4gIH0pKSxcbiAgLi4uKGF3YWl0IGxvYWRDb2RleE1vZGVscyhjb2RleENyZWRzKSkubWFwKChtKSA9PiAoe1xuICAgIC4uLm0sXG4gICAgY29udGV4dDogbS5jb250ZXh0XG4gICAgICA/PyBjYXRhbG9nRGF0YS5vcGVuYWk/Lm1vZGVscz8uW20ubmFtZS5zcGxpdCgnLycpWzFdXT8ubGltaXQ/LmlucHV0XG4gICAgICA/PyBjYXRhbG9nRGF0YS5vcGVuYWk/Lm1vZGVscz8uW20ubmFtZS5zcGxpdCgnLycpWzFdXT8ubGltaXQ/LmNvbnRleHRcbiAgICAgID8/IG51bGwsXG4gICAgYXZhaWxhYmxlOiBjaGF0Z3B0LFxuICAgIGtleUhpbnQ6ICcvY29ubmVjdCcsXG4gIH0pKSxcbl1cblxuaWYgKHByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcbiAgY29uc29sZS5lcnJvcigncGljbzogbm8gY3JlZGVudGlhbHMgZm91bmQuJylcbiAgY29uc29sZS5lcnJvcignc2V0IG9uZSBvZjogR0VNSU5JX0FQSV9LRVksIEFOVEhST1BJQ19BUElfS0VZLCBPUEVOQUlfQVBJX0tFWSwgWEFJX0FQSV9LRVknKVxuICBjb25zb2xlLmVycm9yKCdvciBzaWduIGluIHdpdGggYSBDaGF0R1BUIHBsYW46IHBpY28gLS1jb25uZWN0JylcbiAgcHJvY2Vzcy5leGl0KDEpXG59XG5cbmxldCBtY3BOb3RpZnkgPSAoKSA9PiB7fVxubGV0IHNoZWxsc05vdGlmeSA9ICgpID0+IHt9XG5sZXQgc2hlbGxzRXhpdCA9ICgpID0+IHt9XG5jb25zdCBzaGVsbHMgPSBjcmVhdGVTaGVsbE1hbmFnZXIoe1xuICBvbkNoYW5nZTogKCkgPT4gc2hlbGxzTm90aWZ5KCksXG4gIG9uRXhpdDogKHNoZWxsKSA9PiBzaGVsbHNFeGl0KHNoZWxsKSxcbn0pXG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4gc2hlbGxzLmtpbGxBbGwoKSlcblxubGV0IHdha2V1cHNOb3RpZnkgPSAoKSA9PiB7fVxubGV0IHdha2V1cHNGaXJlID0gKCkgPT4ge31cbmNvbnN0IHdha2V1cHMgPSBjcmVhdGVXYWtldXBNYW5hZ2VyKHtcbiAgb25DaGFuZ2U6ICgpID0+IHdha2V1cHNOb3RpZnkoKSxcbiAgb25GaXJlOiAod2FrZXVwKSA9PiB3YWtldXBzRmlyZSh3YWtldXApLFxufSlcblxuY29uc3QgYm9vdFByb2plY3QgPSAoY3dkKSA9PiBidWlsZFByb2plY3RCb290KGN3ZCwgeyBvbk1jcENoYW5nZTogKCkgPT4gbWNwTm90aWZ5KCkgfSlcblxuY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZENvbmZpZygpXG5jb25zdCBjb25maWd1cmVkRGVmYXVsdCA9IGNvbmZpZy5kZWZhdWx0TW9kZWwgJiYgbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gY29uZmlnLmRlZmF1bHRNb2RlbClcblxuY29uc3QgdGhlbWUgPSB7IGFjY2VudDogREVGQVVMVF9BQ0NFTlQgfVxuXG5jb25zdCBib290ID0ge1xuICAuLi4oYXdhaXQgYm9vdFByb2plY3QocHJvY2Vzcy5jd2QoKSkpLFxuICB0aGVtZSxcbiAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gIG1vZGVscyxcbiAgcHJvdmlkZXJzLFxuICBpbml0aWFsTW9kZWw6IGNvbmZpZ3VyZWREZWZhdWx0IHx8IGRlZmF1bHRNb2RlbChtb2RlbHMpLFxuICBpbml0aWFsRWZmb3J0OiBbJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXS5pbmNsdWRlcyhjb25maWcuZGVmYXVsdEVmZm9ydCkgPyBjb25maWcuZGVmYXVsdEVmZm9ydCA6IG51bGwsXG4gIGF1dG9Db21wYWN0OiBjb25maWcuYXV0b0NvbXBhY3QgIT09IGZhbHNlLFxuICByZWZzOiB7fSxcbiAgc2hlbGxzLFxuICB3YWtldXBzLFxuICBzZXRNY3BOb3RpZnk6IChmbikgPT4geyBtY3BOb3RpZnkgPSBmbiB9LFxuICBzZXRTaGVsbHNOb3RpZnk6IChmbikgPT4geyBzaGVsbHNOb3RpZnkgPSBmbiB9LFxuICBzZXRTaGVsbHNFeGl0OiAoZm4pID0+IHsgc2hlbGxzRXhpdCA9IGZuIH0sXG4gIHNldFdha2V1cHNOb3RpZnk6IChmbikgPT4geyB3YWtldXBzTm90aWZ5ID0gZm4gfSxcbiAgc2V0V2FrZXVwc0ZpcmU6IChmbikgPT4geyB3YWtldXBzRmlyZSA9IGZuIH0sXG4gIHJlYnVpbGQ6IGJvb3RQcm9qZWN0LFxufVxuXG5jb25zdCBhcHAgPSBtb3VudCgoKSA9PiA8QXBwIGJvb3Q9e2Jvb3R9IC8+LCB7IHRpdGxlOiBgcGljbyBcdTAwQjcgJHtib290LnJvb3Quc3BsaXQoJy8nKS5wb3AoKX1gLCB0aGVtZSB9KVxuYm9vdC5zZXRUaGVtZSA9IGFwcC5zZXRUaGVtZVxuYm9vdC5tY3AuY29ubmVjdEFsbCgpXG4iLCAiZXhwb3J0IGNvbnN0IFVTQUdFID0gYHBpY28gLSBhIGNvZGluZyBhZ2VudCBpbiB5b3VyIHRlcm1pbmFsXG5cbnVzYWdlOlxuICBwaWNvICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZSBzZXNzaW9uIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeVxuICBwaWNvIC1wIFwicHJvbXB0XCIgICAgICAgICAgIGhlYWRsZXNzOiBydW4gb25lIGFnZW50aWMgdHVybiwgcHJpbnQgdGhlIGFuc3dlclxuICBjYXQgbG9nIHwgcGljbyAtcCBcIi4uLlwiICAgIHN0ZGluIGlzIGFwcGVuZGVkIHRvIHRoZSBwcm9tcHQgYXMgY29udGV4dFxuXG5oZWFkbGVzcyBmbGFnczpcbiAgLXAsIC0tcHJpbnQgPHByb21wdD4gICAgICAgdGhlIHByb21wdCB0byBydW5cbiAgLS1qc29uICAgICAgICAgICAgICAgICAgICAgcHJpbnQgYSBzaW5nbGUgSlNPTiByZXN1bHQgb2JqZWN0IHRvIHN0ZG91dFxuICAtLXN0cmVhbS1qc29uICAgICAgICAgICAgICBzdHJlYW0gc2Vzc2lvbiBldmVudHMgdG8gc3Rkb3V0IGFzIGpzb25sXG4gIC1tLCAtLW1vZGVsIDxuYW1lPiAgICAgICAgIG1vZGVsIHRvIHVzZSAoZnV6enkgbWF0Y2hlZCwgb3IgcmF3IHByb3ZpZGVyL21vZGVsKVxuICAtLWVmZm9ydCA8bGV2ZWw+ICAgICAgICAgICB0aGlua2luZyBlZmZvcnQ6IGF1dG98bG93fG1lZGl1bXxoaWdofG1heFxuICAtLXJlc3VtZSA8c2Vzc2lvbi1pZD4gICAgICBjb250aW51ZSBhbiBleGlzdGluZyBzZXNzaW9uIGZyb20gdGhpcyBwcm9qZWN0XG4gIC0tbWF4LXRvb2wtY2FsbHMgPG4+ICAgICAgIHN0b3AgdGhlIGFnZW50IGFmdGVyIG4gdG9vbCBjYWxscyAoZGVmYXVsdCA1MClcbiAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgbm8gcHJvZ3Jlc3Mgb3V0cHV0IG9uIHN0ZGVyclxuXG4gIC0tY29ubmVjdCAgICAgICAgICAgICAgICAgIHNpZ24gaW4gd2l0aCBhIENoYXRHUFQgcGxhbiAoT0F1dGggaW4geW91ciBicm93c2VyKVxuICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICBzaG93IHRoaXMgaGVscFxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBzaG93IHZlcnNpb25gXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFyZ3MoYXJndikge1xuICBjb25zdCBvcHRzID0geyBtb2RlOiAnaW50ZXJhY3RpdmUnIH1cbiAgY29uc3QgdGFrZVZhbHVlID0gKG5hbWUsIGkpID0+IHtcbiAgICBpZiAoaSArIDEgPj0gYXJndi5sZW5ndGgpIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSByZXF1aXJlcyBhIHZhbHVlYClcbiAgICByZXR1cm4gYXJndltpICsgMV1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGFyZyA9IGFyZ3ZbaV1cbiAgICBpZiAoYXJnID09PSAnLXAnIHx8IGFyZyA9PT0gJy0tcHJpbnQnKSB7XG4gICAgICBvcHRzLm1vZGUgPSAnaGVhZGxlc3MnXG4gICAgICBvcHRzLnByb21wdCA9IHRha2VWYWx1ZShhcmcsIGkpXG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tanNvbicpIG9wdHMuanNvbiA9IHRydWVcbiAgICBlbHNlIGlmIChhcmcgPT09ICctLXN0cmVhbS1qc29uJykgb3B0cy5zdHJlYW1Kc29uID0gdHJ1ZVxuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy1tJyB8fCBhcmcgPT09ICctLW1vZGVsJykge1xuICAgICAgb3B0cy5tb2RlbCA9IHRha2VWYWx1ZShhcmcsIGkpXG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tZWZmb3J0Jykge1xuICAgICAgY29uc3QgbGV2ZWwgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaWYgKCFbJ2F1dG8nLCAnbG93JywgJ21lZGl1bScsICdoaWdoJywgJ21heCddLmluY2x1ZGVzKGxldmVsKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgZWZmb3J0IFwiJHtsZXZlbH1cIjogdXNlIGF1dG98bG93fG1lZGl1bXxoaWdofG1heGApXG4gICAgICB9XG4gICAgICBvcHRzLmVmZm9ydCA9IGxldmVsXG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tcmVzdW1lJykge1xuICAgICAgb3B0cy5yZXN1bWUgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLW1heC10b29sLWNhbGxzJykge1xuICAgICAgb3B0cy5tYXhUb29sQ2FsbHMgPSBwYXJzZUludCh0YWtlVmFsdWUoYXJnLCBpKSwgMTApXG4gICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShvcHRzLm1heFRvb2xDYWxscykgfHwgb3B0cy5tYXhUb29sQ2FsbHMgPCAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignLS1tYXgtdG9vbC1jYWxscyByZXF1aXJlcyBhIHBvc2l0aXZlIG51bWJlcicpXG4gICAgICB9XG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tY29ubmVjdCcpIG9wdHMubW9kZSA9ICdjb25uZWN0J1xuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy1xJyB8fCBhcmcgPT09ICctLXF1aWV0Jykgb3B0cy5xdWlldCA9IHRydWVcbiAgICBlbHNlIGlmIChhcmcgPT09ICctaCcgfHwgYXJnID09PSAnLS1oZWxwJykgb3B0cy5tb2RlID0gJ2hlbHAnXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLXYnIHx8IGFyZyA9PT0gJy0tdmVyc2lvbicpIG9wdHMubW9kZSA9ICd2ZXJzaW9uJ1xuICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIGFyZ3VtZW50IFwiJHthcmd9XCJgKVxuICB9XG5cbiAgaWYgKG9wdHMubW9kZSA9PT0gJ2hlYWRsZXNzJyAmJiAhb3B0cy5wcm9tcHQ/LnRyaW0oKSkgdGhyb3cgbmV3IEVycm9yKCctcCByZXF1aXJlcyBhIG5vbi1lbXB0eSBwcm9tcHQnKVxuICByZXR1cm4gb3B0c1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXYWtldXBNYW5hZ2VyKHsgb25GaXJlID0gKCkgPT4ge30sIG9uQ2hhbmdlID0gKCkgPT4ge30gfSA9IHt9KSB7XG4gIGNvbnN0IHdha2V1cHMgPSBuZXcgTWFwKClcbiAgbGV0IG5leHRJZCA9IDFcblxuICByZXR1cm4ge1xuICAgIHNjaGVkdWxlKGRlbGF5U2Vjb25kcywgbm90ZSkge1xuICAgICAgY29uc3Qgc2Vjb25kcyA9IE1hdGgubWF4KDUsIE1hdGgucm91bmQoZGVsYXlTZWNvbmRzKSlcbiAgICAgIGNvbnN0IGlkID0gU3RyaW5nKG5leHRJZCsrKVxuICAgICAgY29uc3QgYXQgPSBEYXRlLm5vdygpICsgc2Vjb25kcyAqIDEwMDBcbiAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHdha2V1cHMuZGVsZXRlKGlkKVxuICAgICAgICBvbkNoYW5nZSgpXG4gICAgICAgIG9uRmlyZSh7IGlkLCBub3RlLCBhdCB9KVxuICAgICAgfSwgc2Vjb25kcyAqIDEwMDApXG4gICAgICB3YWtldXBzLnNldChpZCwgeyBpZCwgbm90ZSwgYXQsIHRpbWVyIH0pXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICByZXR1cm4geyBpZCwgYXQsIHNlY29uZHMgfVxuICAgIH0sXG4gICAgY2FuY2VsKGlkKSB7XG4gICAgICBjb25zdCB3YWtldXAgPSB3YWtldXBzLmdldChTdHJpbmcoaWQpKVxuICAgICAgaWYgKCF3YWtldXApIHRocm93IG5ldyBFcnJvcihgbm8gcGVuZGluZyB3YWtlLXVwIHdpdGggaWQgJHtpZH1gKVxuICAgICAgY2xlYXJUaW1lb3V0KHdha2V1cC50aW1lcilcbiAgICAgIHdha2V1cHMuZGVsZXRlKFN0cmluZyhpZCkpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICByZXR1cm4geyBpZDogd2FrZXVwLmlkLCBjYW5jZWxsZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgbGlzdCgpIHtcbiAgICAgIHJldHVybiBbLi4ud2FrZXVwcy52YWx1ZXMoKV1cbiAgICAgICAgLm1hcCgoeyBpZCwgbm90ZSwgYXQgfSkgPT4gKHsgaWQsIG5vdGUsIGF0IH0pKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5hdCAtIGIuYXQpXG4gICAgfSxcbiAgICBwZW5kaW5nKCkge1xuICAgICAgcmV0dXJuIHdha2V1cHMuc2l6ZVxuICAgIH0sXG4gICAgY2FuY2VsQWxsKCkge1xuICAgICAgZm9yIChjb25zdCB3YWtldXAgb2Ygd2FrZXVwcy52YWx1ZXMoKSkgY2xlYXJUaW1lb3V0KHdha2V1cC50aW1lcilcbiAgICAgIHdha2V1cHMuY2xlYXIoKVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBjcmVhdGVTaWduYWwsIE1lbnUsIFNjcm9sbEJveCwgU2hpbW1lciwgVGV4dEFyZWEsIHVzZUZvY3VzLCB1c2VGb2N1c1RyYXAsIHVzZUlucHV0LCB1c2VTZWxlY3Rpb24sIHVzZVRvYXN0IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgbWFrZUV2ZW50IH0gZnJvbSAnLi4vY29yZS9ldmVudHMuanMnXG5pbXBvcnQgeyBjcmVhdGVTZXNzaW9uLCBvcGVuU2Vzc2lvbiwgbG9hZFNlc3Npb24sIGxpc3RTZXNzaW9ucywgZGVsZXRlU2Vzc2lvbiB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5qcydcbmltcG9ydCB7IGRlcml2ZVN0YXRlLCB1c2VyRW50cmllcywgcmV3aW5kU3RhdHMgfSBmcm9tICcuLi9jb3JlL2Rlcml2ZS5qcydcbmltcG9ydCB7IGFwcGVuZFByb21wdCwgbG9hZFByb2plY3RQcm9tcHRzLCBsb2FkR2xvYmFsUHJvbXB0cyB9IGZyb20gJy4uL2NvcmUvaGlzdG9yeS5qcydcbmltcG9ydCB7IHJ1blR1cm4sIHN1bW1hcml6ZVRleHQsIGNvbXBhY3RIaXN0b3J5IH0gZnJvbSAnLi4vY29yZS9hZ2VudC5qcydcbmltcG9ydCB7IGNvbXBhY3Rpb25Qcm9tcHQsIGZvcm1hdENvbXBhY3RTdW1tYXJ5IH0gZnJvbSAnLi4vY29yZS9jb21wYWN0aW9uLmpzJ1xuaW1wb3J0IHsgY3JlYXRlVG9vbHNldCB9IGZyb20gJy4uL2NvcmUvdG9vbHMvaW5kZXguanMnXG5pbXBvcnQgeyBzY2FuVXNlclRvb2xzIH0gZnJvbSAnLi4vY29yZS91c2VyLXRvb2xzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2tpbGxJbmRleCB9IGZyb20gJy4uL2NvcmUvc2tpbGxzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlQ29tbWFuZEluZGV4IH0gZnJvbSAnLi4vY29yZS9jb21tYW5kcy5qcydcbmltcG9ydCB7IHJldmVydEVkaXRzLCByZWFwcGx5RWRpdHMgfSBmcm9tICcuLi9jb3JlL3Jld2luZC5qcydcbmltcG9ydCB7IGJ1aWxkU3lzdGVtUHJvbXB0IH0gZnJvbSAnLi4vY29yZS9zeXN0ZW0tcHJvbXB0LmpzJ1xuaW1wb3J0IHsgbWVtb3J5SW5kZXggfSBmcm9tICcuLi9jb3JlL21lbW9yeS5qcydcbmltcG9ydCB7IHRyYW5zY3JpcHRUb01hcmtkb3duIH0gZnJvbSAnLi4vY29yZS9leHBvcnQuanMnXG5pbXBvcnQgeyBmaW5kTW9kZWwsIGVzdGltYXRlQ29zdCB9IGZyb20gJy4uL2NvcmUvbW9kZWxzLmpzJ1xuaW1wb3J0IHsgYWRob2NNb2RlbCB9IGZyb20gJy4uL2NvcmUvY2F0YWxvZy5qcydcbmltcG9ydCB7IHdyaXRlQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9jb25maWcuanMnXG5pbXBvcnQgeyBjb25uZWN0T3BlbkFJLCBvcGVuYWlDcmVkZW50aWFscywgb3BlbmFpU3RhdHVzLCBkaXNjb25uZWN0T3BlbkFJIH0gZnJvbSAnLi4vY29yZS9vcGVuYWktYXV0aC5qcydcbmltcG9ydCB7IGxvYWRDb2RleE1vZGVscyB9IGZyb20gJy4uL2NvcmUvY29kZXgtbW9kZWxzLmpzJ1xuaW1wb3J0IHsgZnV6enlTY29yZSB9IGZyb20gJy4vZnV6enkuanMnXG5pbXBvcnQgeyBjb21wbGV0aW9uQ29udGV4dCwgYXBwbHlDb21wbGV0aW9uIH0gZnJvbSAnLi9jb21wbGV0aW9uLmpzJ1xuaW1wb3J0IHsgZXh0cmFjdEltYWdlUGF0aHMsIG1lZGlhVHlwZUZvciwgZmluYWxpemVVc2VyQ29udGVudCwgcGxhY2Vob2xkZXJpemVJbWFnZVBhdGhzLCBpbnB1dFRleHRGcm9tQ29udGVudCB9IGZyb20gJy4vYXR0YWNobWVudHMuanMnXG5pbXBvcnQgeyBsaXN0RmlsZXMgfSBmcm9tICcuL2ZpbGVzLmpzJ1xuaW1wb3J0IHsgaGlnaGxpZ2h0VmVyc2lvbiB9IGZyb20gJy4vaGlnaGxpZ2h0LmpzJ1xuaW1wb3J0IHsgTWVzc2FnZSwgQmFubmVyLCB1aVRpdGxlIH0gZnJvbSAnLi90cmFuc2NyaXB0LmpzeCdcbmltcG9ydCB7IEhlbHAgfSBmcm9tICcuL2hlbHAuanN4J1xuaW1wb3J0IHsgTW9kZWxQYW5lbCwgRWZmb3J0UGFuZWwsIEhpc3RvcnlQYW5lbCwgUmV3aW5kUGlja1BhbmVsLCBSZXdpbmRBY3Rpb25QYW5lbCwgUmVzdW1lUGFuZWwsIFByb2plY3RQYW5lbCwgTWNwUGFuZWwsIEluZm9MaXN0UGFuZWwsIFNoZWxsc1BhbmVsLCBXYWtldXBzUGFuZWwsIENvbm5lY3RQYW5lbCwgdGltZUFnbyB9IGZyb20gJy4vcGFuZWxzLmpzeCdcbmltcG9ydCB7IGFjY2VudCwgc2V0QWNjZW50LCBERUZBVUxUX0FDQ0VOVCwgRkcsIEZHX1NPRlQsIE1VVEVELCBGQUlOVCwgUEFORUxfQkcsIFJFRCB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmNvbnN0IEVGRk9SVF9MRVZFTFMgPSBbXG4gIHsga2V5OiBudWxsLCBkZXNjOiAnbGV0IHRoZSBwcm92aWRlciBkZWNpZGUgaG93IG11Y2ggdG8gdGhpbmsnIH0sXG4gIHsga2V5OiAnbG93JywgZGVzYzogJ3F1aWNrIGFuc3dlcnMsIG1pbmltYWwgdGhpbmtpbmcnIH0sXG4gIHsga2V5OiAnbWVkaXVtJywgZGVzYzogJ21vZGVyYXRlIHRoaW5raW5nIGJ1ZGdldCcgfSxcbiAgeyBrZXk6ICdoaWdoJywgZGVzYzogJ2dlbmVyb3VzIHRoaW5raW5nIGJ1ZGdldCcgfSxcbiAgeyBrZXk6ICdtYXgnLCBkZXNjOiAnbWF4aW11bSB0aGlua2luZyBidWRnZXQnIH0sXG5dXG5cbmNvbnN0IENPTU1BTkRTID0gW1xuICB7IG5hbWU6ICdtb2RlbCcsIGRlc2M6ICdTd2l0Y2ggdGhlIGFjdGl2ZSBtb2RlbCBmb3IgdGhpcyBzZXNzaW9uJyB9LFxuICB7IG5hbWU6ICdjb25uZWN0JywgZGVzYzogJ1NpZ24gaW4gd2l0aCBDaGF0R1BUIHRvIHVzZSBhIENvZGV4IHN1YnNjcmlwdGlvbicgfSxcbiAgeyBuYW1lOiAnZWZmb3J0JywgZGVzYzogJ1NldCB0aGUgdGhpbmtpbmcgZWZmb3J0IGZvciB0aGlzIHNlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3Jlc3VtZScsIGRlc2M6ICdQaWNrIHVwIGEgcHJldmlvdXMgc2Vzc2lvbiB3aGVyZSB5b3UgbGVmdCBvZmYnIH0sXG4gIHsgbmFtZTogJ25ldycsIGRlc2M6ICdTdGFydCBhIG5ldyBzZXNzaW9uIGluIHRoaXMgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAncHJvamVjdCcsIGRlc2M6ICdTd2l0Y2ggcHJvamVjdHM6IGp1bXAgdG8gYW5vdGhlciBwcm9qZWN0LCBzYW1lIGFzIGN0cmwrcCcgfSxcbiAgeyBuYW1lOiAnY3dkJywgZGVzYzogJ1Nob3cgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYW5kIHByb2plY3Qgcm9vdCcgfSxcbiAgeyBuYW1lOiAnc2tpbGxzJywgZGVzYzogJ0xpc3QgZXZlcnkgc2tpbGw6IGJ1aWx0aW4sIGdsb2JhbCwgYW5kIHByb2plY3QnIH0sXG4gIHsgbmFtZTogJ2NvbW1hbmRzJywgZGVzYzogJ0xpc3QgZXZlcnkgY29tbWFuZDogYnVpbHRpbiwgZ2xvYmFsLCBhbmQgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAndG9vbHMnLCBkZXNjOiAnTGlzdCBidWlsdGluIGFuZCB1c2VyLWRlZmluZWQgdG9vbHM7IE1DUCB0b29scyBsaXZlIGluIC9tY3AnIH0sXG4gIHsgbmFtZTogJ3Jld2luZCcsIGRlc2M6ICdSZXN0b3JlIHRoZSBjb252ZXJzYXRpb24gdG8gYSBwcmV2aW91cyBtZXNzYWdlJyB9LFxuICB7IG5hbWU6ICdyZW5hbWUnLCBkZXNjOiAnTmFtZSB0aGlzIHNlc3Npb246IC9yZW5hbWUgPG5hbWU+JyB9LFxuICB7IG5hbWU6ICdjb2xvcicsIGRlc2M6ICdDb2xvciB0aGlzIHNlc3Npb246IC9jb2xvciA8bmFtZSBvciAjaGV4PicgfSxcbiAgeyBuYW1lOiAnbWNwJywgZGVzYzogJ01hbmFnZSBNQ1Agc2VydmVyczogYWRkLCB0b2dnbGUsIHJlY29ubmVjdCcgfSxcbiAgeyBuYW1lOiAnc2hlbGxzJywgZGVzYzogJ1ZpZXcgYW5kIG1hbmFnZSBiYWNrZ3JvdW5kIHNoZWxscycgfSxcbiAgeyBuYW1lOiAnd2FrZXVwcycsIGRlc2M6ICdWaWV3IGFuZCBjYW5jZWwgc2NoZWR1bGVkIHdha2UtdXBzJyB9LFxuICB7IG5hbWU6ICdtZW1vcnknLCBkZXNjOiAnTGlzdCBzYXZlZCBtZW1vcmllczogcHJvamVjdCBhbmQgZ2xvYmFsJyB9LFxuICB7IG5hbWU6ICdjb21wYWN0JywgZGVzYzogJ1N1bW1hcml6ZSB0aGUgY29udmVyc2F0aW9uIHRvIGZyZWUgdGhlIGNvbnRleHQgd2luZG93JyB9LFxuICB7IG5hbWU6ICdjbGVhcicsIGRlc2M6ICdDbGVhciB0aGUgY29udmVyc2F0aW9uIGFuZCBmcmVlIHRoZSBjb250ZXh0IHdpbmRvdycgfSxcbiAgeyBuYW1lOiAnY29zdCcsIGRlc2M6ICdTaG93IHRva2VuIHVzYWdlIGFuZCBlc3RpbWF0ZWQgY29zdCBzbyBmYXInIH0sXG4gIHsgbmFtZTogJ2V4cG9ydCcsIGRlc2M6ICdTYXZlIHRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiB0byBhIG1hcmtkb3duIGZpbGUnIH0sXG4gIHsgbmFtZTogJ2hlbHAnLCBkZXNjOiAnTGlzdCBldmVyeSBjb21tYW5kIGFuZCB3aGF0IGl0IGRvZXMnIH0sXG5dXG5cbmNvbnN0IFNFU1NJT05fQ09MT1JTID0ge1xuICByZWQ6ICcjZjg3MTcxJyxcbiAgb3JhbmdlOiAnI2ZiOTIzYycsXG4gIHllbGxvdzogJyNmYWNjMTUnLFxuICBncmVlbjogJyM2QkU3OTUnLFxuICB0ZWFsOiAnIzJkZDRiZicsXG4gIGN5YW46ICcjMjJkM2VlJyxcbiAgYmx1ZTogJyM2MGE1ZmEnLFxuICBwdXJwbGU6ICcjYTc4YmZhJyxcbiAgcGluazogJyNmNDcyYjYnLFxuICBncmF5OiAnIzljYTNhZicsXG59XG5cbmNvbnN0IEhJU1RPUllfU0NPUEVTID0gWydzZXNzaW9uJywgJ3Byb2plY3QnLCAnZXZlcnl3aGVyZSddXG5jb25zdCBSRVNVTUVfU0NPUEVTID0gWydwcm9qZWN0JywgJ2V2ZXJ5d2hlcmUnXVxuXG5leHBvcnQgZnVuY3Rpb24gQXBwKHsgYm9vdCB9KSB7XG4gIGNvbnN0IHsgY3dkLCByb290LCB2ZXJzaW9uLCBtb2RlbHMsIHNraWxscywgbWNwLCB0cmFja2VyLCBzdGFydHVwQ29udGV4dCB9ID0gYm9vdFxuXG4gIGNvbnN0IFtkZXJpdmVkLCBzZXREZXJpdmVkXSA9IGNyZWF0ZVNpZ25hbChkZXJpdmVTdGF0ZShbXSkpXG4gIGNvbnN0IFtvdmVybGF5LCBzZXRPdmVybGF5XSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3N0cmVhbWluZywgc2V0U3RyZWFtaW5nXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbdGhpbmtpbmdOb3csIHNldFRoaW5raW5nTm93XSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2J1c3ksIHNldEJ1c3ldID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbY29tcGFjdGluZywgc2V0Q29tcGFjdGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzdGFydGVkQXQsIHNldFN0YXJ0ZWRBdF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2lucHV0LCBzZXRJbnB1dF0gPSBjcmVhdGVTaWduYWwoJycpXG4gIGNvbnN0IFttb2RlbCwgc2V0TW9kZWxdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbE1vZGVsKVxuICBjb25zdCBbZGVmYXVsdE1vZGVsLCBzZXREZWZhdWx0TW9kZWxdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbE1vZGVsKVxuICBjb25zdCBbZWZmb3J0LCBzZXRFZmZvcnRdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbEVmZm9ydClcbiAgY29uc3QgW2RlZmF1bHRFZmZvcnQsIHNldERlZmF1bHRFZmZvcnRdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbEVmZm9ydClcbiAgY29uc3QgW3Nob3dFZmZvcnRQYW5lbCwgc2V0U2hvd0VmZm9ydFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3F1ZXVlZCwgc2V0UXVldWVkXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3NlbnQsIHNldFNlbnRdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbaGlzdElkeCwgc2V0SGlzdElkeF0gPSBjcmVhdGVTaWduYWwoLTEpXG4gIGNvbnN0IFtjbWRJbmRleCwgc2V0Q21kSW5kZXhdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtjbWRDeWNsZSwgc2V0Q21kQ3ljbGVdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtmaWxlSW5kZXgsIHNldEZpbGVJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2ZpbGVMaXN0LCBzZXRGaWxlTGlzdF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtmaWxlc0Rpc21pc3NlZCwgc2V0RmlsZXNEaXNtaXNzZWRdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSBjcmVhdGVTaWduYWwoJ2NoYXQnKVxuICBjb25zdCBbdmVyYm9zZSwgc2V0VmVyYm9zZV0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93TW9kZWxQYW5lbCwgc2V0U2hvd01vZGVsUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd0hpc3RvcnlQYW5lbCwgc2V0U2hvd0hpc3RvcnlQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtoaXN0U2NvcGUsIHNldEhpc3RTY29wZV0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2hpc3RQcm9tcHRzLCBzZXRIaXN0UHJvbXB0c10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtzaG93UmVzdW1lUGFuZWwsIHNldFNob3dSZXN1bWVQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtyZXN1bWVTY29wZSwgc2V0UmVzdW1lU2NvcGVdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtyZXN1bWVTZXNzaW9ucywgc2V0UmVzdW1lU2Vzc2lvbnNdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbcmVzdW1lTG9hZGluZywgc2V0UmVzdW1lTG9hZGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93TWNwUGFuZWwsIHNldFNob3dNY3BQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93UHJvamVjdFBhbmVsLCBzZXRTaG93UHJvamVjdFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2luZm9QYW5lbCwgc2V0SW5mb1BhbmVsXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbc2hvd1NoZWxsc1BhbmVsLCBzZXRTaG93U2hlbGxzUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd1dha2V1cHNQYW5lbCwgc2V0U2hvd1dha2V1cHNQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93Q29ubmVjdFBhbmVsLCBzZXRTaG93Q29ubmVjdFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2F1dGhQcm92aWRlcnMsIHNldEF1dGhQcm92aWRlcnNdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbc2hlbGxzVmVyc2lvbiwgc2V0U2hlbGxzVmVyc2lvbl0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Byb2plY3RzLCBzZXRQcm9qZWN0c10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtwcm9qZWN0c0xvYWRpbmcsIHNldFByb2plY3RzTG9hZGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFttY3BTZXJ2ZXJzLCBzZXRNY3BTZXJ2ZXJzXSA9IGNyZWF0ZVNpZ25hbChtY3AubGlzdCgpKVxuICBjb25zdCBbY29tcGxldGluZywgc2V0Q29tcGxldGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtjb21wSW5kZXgsIHNldENvbXBJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Jld2luZFN0ZXAsIHNldFJld2luZFN0ZXBdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtyZXdpbmRUYXJnZXQsIHNldFJld2luZFRhcmdldF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW29mZnNldCwgc2V0T2Zmc2V0XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZm9sbG93LCBzZXRGb2xsb3ddID0gY3JlYXRlU2lnbmFsKHRydWUpXG5cbiAgY29uc3QgcmVmcyA9IGJvb3QucmVmc1xuICByZWZzLnNlc3Npb24gPz89IG51bGxcbiAgcmVmcy5hbGxFdmVudHMgPz89IFtdXG4gIHJlZnMucGVyc2lzdGVkID8/PSAwXG4gIHJlZnMuYWJvcnQgPSByZWZzLmFib3J0IHx8IG51bGxcbiAgcmVmcy5yZXdpbmRVbmRvID0gcmVmcy5yZXdpbmRVbmRvIHx8IG51bGxcbiAgcmVmcy5xdWl0QXQgPz89IDBcbiAgcmVmcy5hdHRhY2htZW50cyA/Pz0gbmV3IE1hcCgpXG4gIHJlZnMuaW1hZ2VDb3VudCA/Pz0gMFxuXG4gIGJvb3Quc2V0TWNwTm90aWZ5KCgpID0+IHNldE1jcFNlcnZlcnMoYm9vdC5tY3AubGlzdCgpKSlcbiAgYm9vdC5zZXRTaGVsbHNOb3RpZnkoKCkgPT4gc2V0U2hlbGxzVmVyc2lvbigodikgPT4gdiArIDEpKVxuICBib290LnNldFdha2V1cHNOb3RpZnkoKCkgPT4gc2V0U2hlbGxzVmVyc2lvbigodikgPT4gdiArIDEpKVxuICBib290LnNldFdha2V1cHNGaXJlKCh3YWtldXApID0+IHtcbiAgICBmbGFzaChgd2FrZS11cCAke3dha2V1cC5pZH0gZmlyZWRgKVxuICAgIG5vdGVTeXN0ZW0oXG4gICAgICBgW3N5c3RlbSBub3RpZmljYXRpb25dIHNjaGVkdWxlZCB3YWtlLXVwICR7d2FrZXVwLmlkfSBmaXJlZC4gTm90ZSB0byBzZWxmOiAke3dha2V1cC5ub3RlfWAsXG4gICAgICB7IHdha2U6IHRydWUgfSxcbiAgICApXG4gIH0pXG4gIGJvb3Quc2V0U2hlbGxzRXhpdCgoc2hlbGwpID0+IHtcbiAgICBpZiAoc2hlbGwua2lsbGVkQnkgPT09ICdtb2RlbCcpIHtcbiAgICAgIGZsYXNoKGBzaGVsbCAke3NoZWxsLmlkfSBraWxsZWRgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChzaGVsbC5raWxsZWRCeSA9PT0gJ3VzZXInKSB7XG4gICAgICBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0ga2lsbGVkYClcbiAgICAgIG5vdGVTeXN0ZW0oYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSB0aGUgdXNlciBtYW51YWxseSBraWxsZWQgYmFja2dyb3VuZCBzaGVsbCAke3NoZWxsLmlkfSAoJHtzaGVsbC5jb21tYW5kfSkgZnJvbSB0aGUgc2hlbGxzIHBhbmVsIChTSUdURVJNKS4gVGhpcyB3YXMgZGVsaWJlcmF0ZTsgZG8gbm90IHJlc3RhcnQgaXQgdW5sZXNzIGFza2VkLmAsIHsgd2FrZTogZmFsc2UgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0gZXhpdGVkIFx1MDBCNyBjb2RlICR7c2hlbGwuZXhpdENvZGV9YClcbiAgICBjb25zdCB0YWlsID0gYm9vdC5zaGVsbHMub3V0cHV0KHNoZWxsLmlkLCB7IHRhaWw6IDMwIH0pLm91dHB1dFxuICAgIG5vdGVTeXN0ZW0oXG4gICAgICBgW3N5c3RlbSBub3RpZmljYXRpb25dIGJhY2tncm91bmQgc2hlbGwgJHtzaGVsbC5pZH0gKCR7c2hlbGwuY29tbWFuZH0pIGV4aXRlZCB3aXRoIGNvZGUgJHtzaGVsbC5leGl0Q29kZX0uYCArXG4gICAgICAgICh0YWlsID8gYFxcblJlY2VudCBvdXRwdXQ6XFxuJHt0YWlsfWAgOiAnJyksXG4gICAgICB7IHdha2U6IHRydWUgfSxcbiAgICApXG4gIH0pXG5cbiAgZnVuY3Rpb24gbm90ZVN5c3RlbSh0ZXh0LCB7IHdha2UgfSkge1xuICAgIHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzID8/PSBbXVxuICAgIHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzLnB1c2goeyB0ZXh0LCB3YWtlIH0pXG4gICAgZmx1c2hTeXN0ZW1Ob3RlcygpXG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaFN5c3RlbU5vdGVzKCkge1xuICAgIGlmICghcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXM/Lmxlbmd0aCB8fCBidXN5KCkgfHwgdmlldygpICE9PSAnY2hhdCcgfHwgIXJlZnMuc2Vzc2lvbikgcmV0dXJuXG4gICAgY29uc3Qgbm90ZXMgPSByZWZzLnBlbmRpbmdTeXN0ZW1Ob3Rlc1xuICAgIHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzID0gW11cbiAgICBwZXJzaXN0KG1ha2VFdmVudCgnc3lzdGVtX25vdGUnLCB7IHRleHQ6IG5vdGVzLm1hcCgobikgPT4gbi50ZXh0KS5qb2luKCdcXG5cXG4nKSB9KSlcbiAgICByZURlcml2ZSgpXG4gICAgaWYgKG5vdGVzLnNvbWUoKG4pID0+IG4ud2FrZSkpIHJ1bkFnZW50VHVybigpXG4gIH1cblxuICBjb25zdCBza2lsbENvbW1hbmRzID0gc2tpbGxzLmxpc3QoKS5tYXAoKHMpID0+ICh7IG5hbWU6IHMubmFtZSwgZGVzYzogYHNraWxsIFx1MDBCNyAke3MuZGVzY3JpcHRpb24gfHwgcy5zb3VyY2V9YCwgc2tpbGw6IHRydWUgfSkpXG4gIGNvbnN0IHVzZXJDb21tYW5kcyA9IGJvb3QuY29tbWFuZHMubGlzdCgpLm1hcCgoYykgPT4gKHsgbmFtZTogYy5uYW1lLCBkZXNjOiBgY29tbWFuZCBcdTAwQjcgJHtjLmRlc2NyaXB0aW9uIHx8IGMuc291cmNlfWAsIGNvbW1hbmQ6IHRydWUgfSkpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBjb25zdCBzaGFkb3dlZCA9IFtdXG4gIGZvciAoY29uc3QgYyBvZiBbLi4uQ09NTUFORFMsIC4uLnNraWxsQ29tbWFuZHMsIC4uLnVzZXJDb21tYW5kc10pIHtcbiAgICBpZiAoYnlOYW1lLmhhcyhjLm5hbWUpKSBzaGFkb3dlZC5wdXNoKGAke2Muc2tpbGwgPyAnc2tpbGwnIDogJ2NvbW1hbmQnfSBcIiR7Yy5uYW1lfVwiYClcbiAgICBlbHNlIGJ5TmFtZS5zZXQoYy5uYW1lLCBjKVxuICB9XG4gIGNvbnN0IGFsbENvbW1hbmRzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV1cbiAgaWYgKHNoYWRvd2VkLmxlbmd0aCAmJiAhcmVmcy53YXJuZWRTaGFkb3dlZCkge1xuICAgIHJlZnMud2FybmVkU2hhZG93ZWQgPSB0cnVlXG4gICAgc2V0VGltZW91dCgoKSA9PiBmbGFzaChgc2hhZG93ZWQgYnkgYW4gZWFybGllciBuYW1lLCByZW5hbWUgdG8gdXNlOiAke3NoYWRvd2VkLmpvaW4oJywgJyl9YCksIDApXG4gIH1cblxuICBjb25zdCB0b2FzdCA9IHVzZVRvYXN0KHtcbiAgICBkdXJhdGlvbjogMzUwMCxcbiAgICBwb3NpdGlvbjogJ3RvcC1yaWdodCcsXG4gICAgcmVuZGVyOiAobWVzc2FnZSkgPT4gPHRleHQgc3R5bGU9e3sgYmc6IGFjY2VudCgpLCBjb2xvcjogJ2JsYWNrJywgYm9sZDogdHJ1ZSB9fT57YCAke21lc3NhZ2V9IGB9PC90ZXh0PixcbiAgfSlcblxuICBmdW5jdGlvbiBmbGFzaChtc2cpIHtcbiAgICB0b2FzdChtc2cpXG4gIH1cblxuICBmdW5jdGlvbiBlbnN1cmVTZXNzaW9uKCkge1xuICAgIGlmICghcmVmcy5zZXNzaW9uKSByZWZzLnNlc3Npb24gPSBjcmVhdGVTZXNzaW9uKHsgY3dkLCByb290IH0pXG4gICAgd2hpbGUgKHJlZnMucGVyc2lzdGVkIDwgcmVmcy5hbGxFdmVudHMubGVuZ3RoKSB7XG4gICAgICByZWZzLnNlc3Npb24uYXBwZW5kKHJlZnMuYWxsRXZlbnRzW3JlZnMucGVyc2lzdGVkXSlcbiAgICAgIHJlZnMucGVyc2lzdGVkKytcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwZXJzaXN0KGV2ZW50KSB7XG4gICAgcmVmcy5hbGxFdmVudHMucHVzaChldmVudClcbiAgICBpZiAocmVmcy5zZXNzaW9uKSB7XG4gICAgICByZWZzLnNlc3Npb24uYXBwZW5kKGV2ZW50KVxuICAgICAgcmVmcy5wZXJzaXN0ZWQgPSByZWZzLmFsbEV2ZW50cy5sZW5ndGhcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZURlcml2ZSgpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZVN0YXRlKHJlZnMuYWxsRXZlbnRzKVxuICAgIHNldERlcml2ZWQoc3RhdGUpXG4gICAgc2V0QWNjZW50KHN0YXRlLmNvbG9yKVxuICAgIGJvb3Quc2V0VGhlbWU/Lih7IGFjY2VudDogc3RhdGUuY29sb3IgfHwgREVGQVVMVF9BQ0NFTlQgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGZsdXNoU3RyZWFtKGl0ZW1zKSB7XG4gICAgY29uc3QgdGV4dCA9IHN0cmVhbWluZygpXG4gICAgaWYgKHRleHQpIGl0ZW1zLnB1c2goeyBraW5kOiAnYXNzaXN0YW50JywgdGV4dCB9KVxuICAgIHNldFN0cmVhbWluZyhudWxsKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVR1cm4odGV4dCkge1xuICAgIGNvbnN0IHsgY29udGVudCB9ID0gZmluYWxpemVVc2VyQ29udGVudCh0ZXh0LCByZWZzLmF0dGFjaG1lbnRzKVxuICAgIHBlcnNpc3QobWFrZUV2ZW50KCdtZXNzYWdlJywgeyBtZXNzYWdlOiB7IHJvbGU6ICd1c2VyJywgY29udGVudCB9IH0pKVxuICAgIGVuc3VyZVNlc3Npb24oKVxuICAgIHJlRGVyaXZlKClcbiAgICBhd2FpdCBydW5BZ2VudFR1cm4oKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcGVyZm9ybUNvbXBhY3Rpb24oaW5zdHJ1Y3Rpb25zID0gJycpIHtcbiAgICBpZiAoYnVzeSgpIHx8IGNvbXBhY3RpbmcoKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlZCgpXG4gICAgaWYgKHN0YXRlLnByb3ZpZGVySGlzdG9yeS5sZW5ndGggPCA0KSByZXR1cm4gZmxhc2goJ25vdGhpbmcgdG8gY29tcGFjdCB5ZXQnKVxuXG4gICAgbGV0IGF1dGggPSBudWxsXG4gICAgaWYgKG1vZGVsKCkucHJvdmlkZXIgPT09ICdjb2RleCcpIHtcbiAgICAgIGF1dGggPSBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICBpZiAoIWF1dGgpIHJldHVybiBmbGFzaCgnY29kZXggbW9kZWxzIG5lZWQgYSBDaGF0R1BUIHNpZ24taW46IHJ1biAvY29ubmVjdCcpXG4gICAgfVxuXG4gICAgY29uc3QgZW50cmllcyA9IHVzZXJFbnRyaWVzKHN0YXRlKVxuICAgIGNvbnN0IGtlZXBGcm9tID0gZW50cmllcy5hdCgtMik/LmV2ZW50SWQgPz8gZW50cmllcy5hdCgtMSk/LmV2ZW50SWRcblxuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICByZWZzLmFib3J0ID0gY29udHJvbGxlclxuICAgIHNldEJ1c3kodHJ1ZSlcbiAgICBzZXRDb21wYWN0aW5nKHRydWUpXG4gICAgc2V0U3RhcnRlZEF0KERhdGUubm93KCkpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhdyA9IGF3YWl0IGNvbXBhY3RIaXN0b3J5KHtcbiAgICAgICAgaGlzdG9yeTogc3RhdGUucHJvdmlkZXJIaXN0b3J5LFxuICAgICAgICBtb2RlbE5hbWU6IG1vZGVsKCkubmFtZSxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgcHJvbXB0OiBjb21wYWN0aW9uUHJvbXB0KGluc3RydWN0aW9ucyksXG4gICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KVxuICAgICAgY29uc3Qgc3VtbWFyeSA9IGZvcm1hdENvbXBhY3RTdW1tYXJ5KHJhdylcbiAgICAgIGlmICghc3VtbWFyeSkgdGhyb3cgbmV3IEVycm9yKCdlbXB0eSBzdW1tYXJ5JylcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdjb21wYWN0JywgeyBzdW1tYXJ5LCBrZWVwRnJvbSwgc2Vzc2lvbkZpbGU6IHJlZnMuc2Vzc2lvbj8uZmlsZSB8fCBudWxsIH0pKVxuICAgICAgcmVEZXJpdmUoKVxuICAgICAgZmxhc2goJ2NvbXBhY3RlZCBcdTAwQjcgcmVjZW50IG1lc3NhZ2VzIGtlcHQgdmVyYmF0aW0nKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGNvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIGZsYXNoKCdjb21wYWN0aW9uIGNhbmNlbGxlZCcpXG4gICAgICBlbHNlIGZsYXNoKGBjb21wYWN0IGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCAxMDApfWApXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldENvbXBhY3RpbmcoZmFsc2UpXG4gICAgICBzZXRCdXN5KGZhbHNlKVxuICAgICAgcmVmcy5hYm9ydCA9IG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBxID0gcXVldWVkKClcbiAgICBpZiAocS5sZW5ndGggPiAwKSB7XG4gICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICBpZiAoY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkgc2V0SW5wdXQocS5qb2luKCdcXG4nKSlcbiAgICAgIGVsc2UgZXhlY3V0ZVR1cm4ocS5qb2luKCdcXG4nKSlcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtYXliZUF1dG9Db21wYWN0KCkge1xuICAgIGlmIChib290LmF1dG9Db21wYWN0ID09PSBmYWxzZSB8fCBidXN5KCkgfHwgY29tcGFjdGluZygpKSByZXR1cm5cbiAgICBjb25zdCBsaW1pdCA9IG1vZGVsKCkuY29udGV4dFxuICAgIGNvbnN0IHVzZWQgPSBkZXJpdmVkKCkubGFzdFByb21wdFRva2Vuc1xuICAgIGlmICghbGltaXQgfHwgIXVzZWQgfHwgZGVyaXZlZCgpLmxhc3RQcm9tcHRNb2RlbCAhPT0gbW9kZWwoKS5uYW1lKSByZXR1cm5cbiAgICBjb25zdCByYXRpbyA9IHVzZWQgLyBsaW1pdFxuICAgIGlmIChyYXRpbyA+PSAwLjg1KSB7XG4gICAgICBmbGFzaChgY29udGV4dCAke01hdGgucm91bmQocmF0aW8gKiAxMDApfSUgZnVsbCBcdTAwQjcgYXV0by1jb21wYWN0aW5nYClcbiAgICAgIHBlcmZvcm1Db21wYWN0aW9uKClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBydW5BZ2VudFR1cm4oKSB7XG4gICAgbGV0IGF1dGggPSBudWxsXG4gICAgaWYgKG1vZGVsKCkucHJvdmlkZXIgPT09ICdjb2RleCcpIHtcbiAgICAgIGF1dGggPSBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICBpZiAoIWF1dGgpIHtcbiAgICAgICAgZmxhc2goJ2NvZGV4IG1vZGVscyBuZWVkIGEgQ2hhdEdQVCBzaWduLWluOiBydW4gL2Nvbm5lY3QnKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgc2V0Rm9sbG93KHRydWUpXG4gICAgc2V0QnVzeSh0cnVlKVxuICAgIHNldFN0YXJ0ZWRBdChEYXRlLm5vdygpKVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIHJlZnMuYWJvcnQgPSBjb250cm9sbGVyXG4gICAgY29uc3QgbG9hZGVkQmVmb3JlID0gbmV3IFNldCh0cmFja2VyLmxvYWRlZClcbiAgICBib290LnNraWxscyA9IGF3YWl0IGNyZWF0ZVNraWxsSW5kZXgoYm9vdC5yb290KS5jYXRjaCgoKSA9PiBib290LnNraWxscykgPz8gYm9vdC5za2lsbHNcbiAgICBib290LmNvbW1hbmRzID0gYXdhaXQgY3JlYXRlQ29tbWFuZEluZGV4KGJvb3Qucm9vdCkuY2F0Y2goKCkgPT4gYm9vdC5jb21tYW5kcykgPz8gYm9vdC5jb21tYW5kc1xuICAgIGNvbnN0IGZyZXNoU2tpbGxzID0gYm9vdC5za2lsbHNcbiAgICBjb25zdCB1c2VyVG9vbFNjYW4gPSBhd2FpdCBzY2FuVXNlclRvb2xzKHsgY3dkLCByb290OiBib290LnJvb3QgfSkuY2F0Y2goKCkgPT4gKHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH0pKVxuICAgIGZvciAoY29uc3QgZmFpbHVyZSBvZiB1c2VyVG9vbFNjYW4uZXJyb3JzKSB7XG4gICAgICBjb25zdCBrZXkgPSBgJHtmYWlsdXJlLmZpbGV9OiR7ZmFpbHVyZS5lcnJvcn1gXG4gICAgICBpZiAoIXJlZnMud2FybmVkVG9vbHM/LmhhcyhrZXkpKSB7XG4gICAgICAgIDsocmVmcy53YXJuZWRUb29scyA/Pz0gbmV3IFNldCgpKS5hZGQoa2V5KVxuICAgICAgICBmbGFzaChgdG9vbCBza2lwcGVkOiAke2ZhaWx1cmUuZmlsZS5zcGxpdCgnLycpLnBvcCgpfSBcdTAwQjcgJHtmYWlsdXJlLmVycm9yfWApXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHsgdG9vbHMsIHJlY29yZGVyIH0gPSBjcmVhdGVUb29sc2V0KHtcbiAgICAgIGN3ZCxcbiAgICAgIHRyYWNrZXIsXG4gICAgICBza2lsbHM6IGZyZXNoU2tpbGxzLFxuICAgICAgc2hlbGxzOiBib290LnNoZWxscyxcbiAgICAgIHdha2V1cHM6IGJvb3Qud2FrZXVwcyxcbiAgICAgIG1lbW9yeTogYm9vdC5tZW1vcnksXG4gICAgICBtY3BUb29sczogbWNwLnRvb2xzKCksXG4gICAgICB1c2VyVG9vbHM6IHVzZXJUb29sU2Nhbi50b29scyxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSlcblxuICAgIHJlZnMudHVyblRob3VnaHRzID0gJydcbiAgICBjb25zdCBvblN0cmVhbSA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0aGlua2luZycpIHtcbiAgICAgICAgcmVmcy50dXJuVGhvdWdodHMgKz0gZXZlbnQuY29udGVudFxuICAgICAgICBzZXRUaGlua2luZ05vdyh0cnVlKVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnY29udGVudCcpIHtcbiAgICAgICAgc2V0VGhpbmtpbmdOb3coZmFsc2UpXG4gICAgICAgIHNldFN0cmVhbWluZygocykgPT4gKHMgfHwgJycpICsgZXZlbnQuY29udGVudClcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY2FsbHNfcmVhZHknKSB7XG4gICAgICAgIHNldFRoaW5raW5nTm93KGZhbHNlKVxuICAgICAgICBzZXRPdmVybGF5KChvKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IFsuLi5vXVxuICAgICAgICAgIGZsdXNoU3RyZWFtKG5leHQpXG4gICAgICAgICAgcmV0dXJuIG5leHRcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXhlY3V0aW5nJykge1xuICAgICAgICBzZXRPdmVybGF5KChvKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IFsuLi5vXVxuICAgICAgICAgIGZsdXNoU3RyZWFtKG5leHQpXG4gICAgICAgICAgbGV0IGFyZ3MgPSB7fVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhcmdzID0gSlNPTi5wYXJzZShldmVudC5jYWxsLmZ1bmN0aW9uLmFyZ3VtZW50cylcbiAgICAgICAgICB9IGNhdGNoIHt9XG4gICAgICAgICAgbmV4dC5wdXNoKHtcbiAgICAgICAgICAgIGtpbmQ6ICd0b29sJyxcbiAgICAgICAgICAgIGNhbGxJZDogZXZlbnQuY2FsbC5pZCxcbiAgICAgICAgICAgIG5hbWU6IGV2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZSxcbiAgICAgICAgICAgIHRpdGxlOiB1aVRpdGxlKGV2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZSwgYXJncyksXG4gICAgICAgICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVybiBuZXh0XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NvbXBsZXRlJyB8fCBldmVudC50eXBlID09PSAndG9vbF9lcnJvcicpIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSByZWNvcmRlci5lbnRyaWVzLmF0KC0xKVxuICAgICAgICBzZXRPdmVybGF5KChvKSA9PlxuICAgICAgICAgIG8ubWFwKChpdGVtKSA9PlxuICAgICAgICAgICAgaXRlbS5raW5kID09PSAndG9vbCcgJiYgaXRlbS5jYWxsSWQgPT09IGV2ZW50LmNhbGwuaWRcbiAgICAgICAgICAgICAgPyB7IC4uLml0ZW0sIC4uLihlbnRyeT8uY2FsbElkID09PSBldmVudC5jYWxsLmlkID8gZW50cnkgOiB7fSksIGtpbmQ6ICd0b29sJywgc3RhdHVzOiBlbnRyeT8uc3RhdHVzIHx8ICdkb25lJyB9XG4gICAgICAgICAgICAgIDogaXRlbSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdFxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBydW5UdXJuKHtcbiAgICAgICAgaGlzdG9yeTogZGVyaXZlZCgpLnByb3ZpZGVySGlzdG9yeSxcbiAgICAgICAgdG9vbHMsXG4gICAgICAgIHJlY29yZGVyLFxuICAgICAgICBtb2RlbE5hbWU6IG1vZGVsKCkubmFtZSxcbiAgICAgICAgZWZmb3J0OiBlZmZvcnRBcHBsaWVzKCkgPyBlZmZvcnQoKSA/PyAnYXV0bycgOiBudWxsLFxuICAgICAgICBhdXRoLFxuICAgICAgICBzeXN0ZW06IGJ1aWxkU3lzdGVtUHJvbXB0KHtcbiAgICAgICAgICBjd2QsXG4gICAgICAgICAgY29udGV4dEZpbGVzOiBzdGFydHVwQ29udGV4dC5maWxlcyxcbiAgICAgICAgICBza2lsbHM6IGZyZXNoU2tpbGxzLmxpc3QoKSxcbiAgICAgICAgICBtZW1vcnlJbmRleFRleHQ6IG1lbW9yeUluZGV4KGF3YWl0IGJvb3QubWVtb3J5Lmxpc3QoKS5jYXRjaCgoKSA9PiBbXSksIGJvb3Qucm9vdCksXG4gICAgICAgIH0pLFxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBvblN0cmVhbSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXRPdmVybGF5KFtdKVxuICAgICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gICAgICBzZXRUaGlua2luZ05vdyhmYWxzZSlcbiAgICAgIHNldEJ1c3koZmFsc2UpXG4gICAgICByZWZzLmFib3J0ID0gbnVsbFxuICAgICAgZmxhc2goYGVycm9yOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDEyMCl9YClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChyZWZzLnR1cm5UaG91Z2h0cykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rob3VnaHRzJywgeyB0ZXh0OiByZWZzLnR1cm5UaG91Z2h0cyB9KSlcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVzdWx0Lm1lc3NhZ2VzKSBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZSB9KSlcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlY29yZGVyLmVudHJpZXMpIHBlcnNpc3QobWFrZUV2ZW50KCd0b29sX21ldGEnLCBlbnRyeSkpXG4gICAgZm9yIChjb25zdCBwYXRoIG9mIHRyYWNrZXIubG9hZGVkKSB7XG4gICAgICBpZiAoIWxvYWRlZEJlZm9yZS5oYXMocGF0aCkpIHBlcnNpc3QobWFrZUV2ZW50KCdjb250ZXh0X2ZpbGUnLCB7IHBhdGggfSkpXG4gICAgfVxuICAgIGlmIChyZXN1bHQudXNhZ2UpIHBlcnNpc3QobWFrZUV2ZW50KCd1c2FnZScsIHsgbW9kZWw6IG1vZGVsKCkubmFtZSwgdXNhZ2U6IHJlc3VsdC51c2FnZSwgbGFzdFByb21wdDogcmVzdWx0Lmxhc3RQcm9tcHRUb2tlbnMgfSkpXG4gICAgaWYgKHJlc3VsdC5pbnRlcnJ1cHRlZCkgcGVyc2lzdChtYWtlRXZlbnQoJ2ludGVycnVwdCcsIHt9KSlcblxuICAgIHNldE92ZXJsYXkoW10pXG4gICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gICAgc2V0VGhpbmtpbmdOb3coZmFsc2UpXG4gICAgcmVEZXJpdmUoKVxuICAgIHNldEJ1c3koZmFsc2UpXG4gICAgcmVmcy5hYm9ydCA9IG51bGxcbiAgICBpZiAocmVzdWx0LnN0YWxsZWQpIGZsYXNoKCdtb2RlbCBzdGFsbGVkIFx1MDBCNyB0dXJuIGludGVycnVwdGVkJylcblxuICAgIGNvbnN0IHEgPSBxdWV1ZWQoKVxuICAgIGlmIChxLmxlbmd0aCA+IDApIHtcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIGlmIChyZXN1bHQuaW50ZXJydXB0ZWQpIHNldElucHV0KHEuam9pbignXFxuJykpXG4gICAgICBlbHNlIHtcbiAgICAgICAgZXhlY3V0ZVR1cm4ocS5qb2luKCdcXG4nKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIGZsdXNoU3lzdGVtTm90ZXMoKVxuICAgIG1heWJlQXV0b0NvbXBhY3QoKVxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGxldGlvblNvdXJjZShuYW1lKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjb2xvcicpIHJldHVybiBPYmplY3Qua2V5cyhTRVNTSU9OX0NPTE9SUylcbiAgICBpZiAobmFtZSA9PT0gJ2VmZm9ydCcpIHJldHVybiBbJ2RlZmF1bHQnLCAnbG93JywgJ21lZGl1bScsICdoaWdoJywgJ21heCddXG4gICAgaWYgKG5hbWUgPT09ICdtb2RlbCcpIHJldHVybiBtb2RlbHMuZmlsdGVyKChtKSA9PiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpLm1hcCgobSkgPT4gbS5uYW1lKVxuICAgIGNvbnN0IGNtZCA9IGFsbENvbW1hbmRzLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gbmFtZSlcbiAgICBpZiAoY21kPy5za2lsbCB8fCBjbWQ/LmNvbW1hbmQpIHJldHVybiBmaWxlTGlzdCgpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc21pc3NDb21wbGV0aW9uKCkge1xuICAgIHNldENvbXBsZXRpbmcoZmFsc2UpXG4gICAgc2V0Q29tcEluZGV4KDApXG4gIH1cblxuICBmdW5jdGlvbiBhY2NlcHRDb21wbGV0aW9uKHZhbHVlLCBjdHgsIGNhbmRpZGF0ZSkge1xuICAgIHNldElucHV0KGFwcGx5Q29tcGxldGlvbih2YWx1ZSwgY3R4LCBjYW5kaWRhdGUpKVxuICAgIGRpc21pc3NDb21wbGV0aW9uKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlbmQodGV4dCkge1xuICAgIGNvbnN0IHZhbHVlID0gdGV4dC50cmltKClcbiAgICBpZiAoIXZhbHVlKSByZXR1cm5cbiAgICBkaXNtaXNzQ29tcGxldGlvbigpXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgY29uc3QgW25hbWUsIC4uLnJlc3RdID0gdmFsdWUuc2xpY2UoMSkuc3BsaXQoL1xccysvKVxuICAgICAgY29uc3QgbWF0Y2ggPSBhbGxDb21tYW5kcy5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBzZXRJbnB1dCgnJylcbiAgICAgICAgcnVuQ29tbWFuZChtYXRjaCwgcmVzdC5qb2luKCcgJykpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBzZXRTZW50KChzKSA9PiBbLi4ucywgeyB0ZXh0OiB2YWx1ZSwgYXQ6IERhdGUubm93KCkgfV0pXG4gICAgc2V0SGlzdElkeCgtMSlcbiAgICBhcHBlbmRQcm9tcHQocm9vdCwgdmFsdWUpLmNhdGNoKCgpID0+IHt9KVxuICAgIGlmIChidXN5KCkpIHtcbiAgICAgIHNldFF1ZXVlZCgocSkgPT4gWy4uLnEsIHZhbHVlXSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBleGVjdXRlVHVybih2YWx1ZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGludGVycnVwdCgpIHtcbiAgICBpZiAoIWJ1c3koKSkgcmV0dXJuXG4gICAgcmVmcy5hYm9ydD8uYWJvcnQoKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcnVuQ29tbWFuZChjLCBhcmdzID0gJycpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3MgIT09ICdzdHJpbmcnKSBhcmdzID0gJydcbiAgICBzZXRJbnB1dCgnJylcbiAgICBzZXRDbWRDeWNsZShudWxsKVxuICAgIGlmIChjLm5hbWUgPT09ICdyZW5hbWUnKSB7XG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBmbGFzaCgndXNhZ2U6IC9yZW5hbWUgPG5ldyBuYW1lPicpXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgndGl0bGUnLCB7IHRleHQ6IGFyZ3MgfSkpXG4gICAgICBlbnN1cmVTZXNzaW9uKClcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKGBzZXNzaW9uIHJlbmFtZWQgdG8gXCIke2FyZ3N9XCJgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb2xvcicpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoU0VTU0lPTl9DT0xPUlMpXG4gICAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKFNFU1NJT05fQ09MT1JTKVxuICAgICAgbGV0IHZhbHVlXG4gICAgICBpZiAoIWFyZ3MpIHtcbiAgICAgICAgY29uc3QgbmV4dCA9ICh2YWx1ZXMuaW5kZXhPZihkZXJpdmVkKCkuY29sb3IpICsgMSkgJSB2YWx1ZXMubGVuZ3RoXG4gICAgICAgIHZhbHVlID0gdmFsdWVzW25leHRdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IFNFU1NJT05fQ09MT1JTW2FyZ3MudG9Mb3dlckNhc2UoKV0gfHwgKC9eI1swLTlhLWZBLUZdezZ9JC8udGVzdChhcmdzKSA/IGFyZ3MgOiBudWxsKVxuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gZmxhc2goYHVzYWdlOiAvY29sb3IgdG8gY3ljbGUsIG9yIC9jb2xvciA8JHtuYW1lcy5qb2luKCd8Jyl9fCNoZXg+YClcbiAgICAgIH1cbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdjb2xvcicsIHsgdmFsdWUgfSkpXG4gICAgICBlbnN1cmVTZXNzaW9uKClcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGNvbnN0IG5hbWUgPSBuYW1lc1t2YWx1ZXMuaW5kZXhPZih2YWx1ZSldXG4gICAgICBmbGFzaChgc2Vzc2lvbiBjb2xvcjogJHtuYW1lIHx8IHZhbHVlfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMuc2tpbGwpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBza2lsbHMubG9hZChjLm5hbWUpXG4gICAgICBpZiAoIWJvZHkpIHJldHVybiBmbGFzaChgY291bGQgbm90IGxvYWQgc2tpbGwgJHtjLm5hbWV9YClcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdza2lsbCcsIHsgbmFtZTogYy5uYW1lLCBzb3VyY2U6ICd1c2VyJyB9KSlcbiAgICAgIHNlbmQoYEZvbGxvdyB0aGVzZSBza2lsbCBpbnN0cnVjdGlvbnMgbm93LlxcblxcbiR7Ym9keX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLmNvbW1hbmQpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBib290LmNvbW1hbmRzLmxvYWQoYy5uYW1lLCBhcmdzKVxuICAgICAgaWYgKCF0ZXh0KSByZXR1cm4gZmxhc2goYGNvdWxkIG5vdCBsb2FkIGNvbW1hbmQgJHtjLm5hbWV9YClcbiAgICAgIHNlbmQodGV4dClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29ubmVjdCcpIHJldHVybiBvcGVuQ29ubmVjdFBhbmVsKClcbiAgICBpZiAoYy5uYW1lID09PSAnbW9kZWwnKSB7XG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBzZXRTaG93TW9kZWxQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgZXhhY3QgPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBhcmdzKVxuICAgICAgY29uc3QgYWRob2MgPSAhZXhhY3QgJiYgYXJncy5pbmNsdWRlcygnLycpID8gYWRob2NNb2RlbChhcmdzLCBib290LnByb3ZpZGVycykgOiBudWxsXG4gICAgICBjb25zdCBzY29yZWQgPSBleGFjdCB8fCBhZGhvY1xuICAgICAgICA/IFtdXG4gICAgICAgIDogbW9kZWxzXG4gICAgICAgICAgICAubWFwKChtKSA9PiBbZnV6enlTY29yZShhcmdzLCBtLm5hbWUpLCBtXSlcbiAgICAgICAgICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gICAgICBjb25zdCBwaWNrID0gZXhhY3QgfHwgYWRob2MgfHwgc2NvcmVkWzBdPy5bMV1cbiAgICAgIGlmICghcGljaykgcmV0dXJuIGZsYXNoKGBubyBhdmFpbGFibGUgbW9kZWwgbWF0Y2hlcyBcIiR7YXJnc31cImApXG4gICAgICBpZiAocGljay5hdmFpbGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmxhc2goYHNldCAke3BpY2sua2V5SGludH0gaW4geW91ciBlbnZpcm9ubWVudCB0byB1c2UgJHtwaWNrLm5hbWV9YClcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdtb2RlbF9zd2l0Y2gnLCB7IGZyb206IG1vZGVsKCkubmFtZSwgdG86IHBpY2submFtZSB9KSlcbiAgICAgIHNldE1vZGVsKHBpY2spXG4gICAgICBmbGFzaChhZGhvYyA/IGBtb2RlbCBzZXQgdG8gJHtwaWNrLm5hbWV9IChub3QgaW4gY2F0YWxvZywgcHJpY2luZyB1bmtub3duKWAgOiBgbW9kZWwgc2V0IHRvICR7cGljay5uYW1lfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2VmZm9ydCcpIHtcbiAgICAgIGlmICghZWZmb3J0QXBwbGllcygpKSByZXR1cm4gZmxhc2goYCR7bW9kZWwoKS5uYW1lfSBkb2VzIG5vdCBzdXBwb3J0IGVmZm9ydCBjb250cm9sYClcbiAgICAgIGlmICghYXJncykgcmV0dXJuIHNldFNob3dFZmZvcnRQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgbGV2ZWwgPSBhcmdzLnRvTG93ZXJDYXNlKClcbiAgICAgIGlmIChsZXZlbCA9PT0gJ2RlZmF1bHQnKSByZXR1cm4gc2V0U2Vzc2lvbkVmZm9ydChudWxsKVxuICAgICAgaWYgKCFFRkZPUlRfTEVWRUxTLnNvbWUoKGwpID0+IGwua2V5ID09PSBsZXZlbCkpIHJldHVybiBmbGFzaCgndXNhZ2U6IC9lZmZvcnQgPGRlZmF1bHR8bG93fG1lZGl1bXxoaWdofG1heD4nKVxuICAgICAgcmV0dXJuIHNldFNlc3Npb25FZmZvcnQobGV2ZWwpXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdoZWxwJykgcmV0dXJuIHNldFZpZXcoJ2hlbHAnKVxuICAgIGlmIChjLm5hbWUgPT09ICdtY3AnKSByZXR1cm4gc2V0U2hvd01jcFBhbmVsKHRydWUpXG4gICAgaWYgKGMubmFtZSA9PT0gJ3NoZWxscycpIHJldHVybiBzZXRTaG93U2hlbGxzUGFuZWwodHJ1ZSlcbiAgICBpZiAoYy5uYW1lID09PSAnd2FrZXVwcycpIHJldHVybiBzZXRTaG93V2FrZXVwc1BhbmVsKHRydWUpXG4gICAgaWYgKGMubmFtZSA9PT0gJ21lbW9yeScpIHtcbiAgICAgIGNvbnN0IG1lbW9yaWVzID0gYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKVxuICAgICAgcmV0dXJuIHNldEluZm9QYW5lbCh7XG4gICAgICAgIHRpdGxlOiBgTWVtb3J5IFx1MDBCNyAke3Nob3J0ZW5QYXRoKGJvb3Qucm9vdCl9YCxcbiAgICAgICAgcm93czogbWVtb3JpZXMubWFwKChtKSA9PiAoeyBuYW1lOiBtLm5hbWUsIGRlc2M6IG0uZGVzY3JpcHRpb24sIG5vdGU6IG0uc2NvcGUgfSkpLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Jlc3VtZScpIHtcbiAgICAgIHNldFNob3dSZXN1bWVQYW5lbCh0cnVlKVxuICAgICAgcmVmcmVzaFNlc3Npb25zKHJlc3VtZVNjb3BlKCkpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Byb2plY3QnKSByZXR1cm4gb3BlblByb2plY3RQYW5lbCgpXG4gICAgaWYgKGMubmFtZSA9PT0gJ2N3ZCcpIHtcbiAgICAgIGNvbnN0IHJvb3ROb3RlID0gYm9vdC5yb290ICE9PSBib290LmN3ZCA/IGAgXHUwMEI3IHByb2plY3Qgcm9vdCAke3Nob3J0ZW5QYXRoKGJvb3Qucm9vdCl9YCA6ICcnXG4gICAgICByZXR1cm4gZmxhc2goYCR7Ym9vdC5kaXNwbGF5Q3dkfSR7cm9vdE5vdGV9YClcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3NraWxscycpIHtcbiAgICAgIHJldHVybiBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogJ1NraWxscycsXG4gICAgICAgIHJvd3M6IHNraWxscy5saXN0KCkubWFwKChzKSA9PiAoeyBuYW1lOiBzLm5hbWUsIGRlc2M6IHMuZGVzY3JpcHRpb24sIG5vdGU6IHMuc291cmNlIH0pKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb21tYW5kcycpIHtcbiAgICAgIHJldHVybiBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogJ0NvbW1hbmRzJyxcbiAgICAgICAgcm93czogW1xuICAgICAgICAgIC4uLkNPTU1BTkRTLm1hcCgoY21kKSA9PiAoeyBuYW1lOiBgLyR7Y21kLm5hbWV9YCwgZGVzYzogY21kLmRlc2MsIG5vdGU6ICdidWlsdGluJyB9KSksXG4gICAgICAgICAgLi4uYm9vdC5jb21tYW5kcy5saXN0KCkubWFwKChjbWQpID0+ICh7IG5hbWU6IGAvJHtjbWQubmFtZX1gLCBkZXNjOiBjbWQuZGVzY3JpcHRpb24sIG5vdGU6IGNtZC5zb3VyY2UgfSkpLFxuICAgICAgICBdLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Rvb2xzJykge1xuICAgICAgY29uc3Qgc2NhbiA9IGF3YWl0IHNjYW5Vc2VyVG9vbHMoeyBjd2Q6IGJvb3QuY3dkLCByb290OiBib290LnJvb3QgfSkuY2F0Y2goKCkgPT4gKHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH0pKVxuICAgICAgY29uc3QgeyB0b29sczogYnVpbHRpbnMgfSA9IGNyZWF0ZVRvb2xzZXQoeyBjd2Q6IGJvb3QuY3dkLCB0cmFja2VyLCBza2lsbHMgfSlcbiAgICAgIGNvbnN0IG1jcENvdW50ID0gbWNwLnRvb2xzKCkubGVuZ3RoXG4gICAgICBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogYFRvb2xzJHttY3BDb3VudCA/IGAgXHUwMEI3IHBsdXMgJHttY3BDb3VudH0gTUNQIChzZWUgL21jcClgIDogJyd9YCxcbiAgICAgICAgcm93czogW1xuICAgICAgICAgIC4uLmJ1aWx0aW5zLm1hcCgodCkgPT4gKHsgbmFtZTogdC5uYW1lLCBkZXNjOiB0LmRlc2NyaXB0aW9uLnNwbGl0KCdcXG4nKVswXSwgbm90ZTogJ2J1aWx0aW4nIH0pKSxcbiAgICAgICAgICAuLi5zY2FuLnRvb2xzLm1hcCgodCkgPT4gKHsgbmFtZTogdC5uYW1lLCBkZXNjOiB0LmRlc2NyaXB0aW9uLCBub3RlOiBgJHt0LnNvdXJjZX0gXHUwMEI3ICR7dC5fZmlsZS5zcGxpdCgnLycpLnBvcCgpfWAgfSkpLFxuICAgICAgICAgIC4uLnNjYW4uZXJyb3JzLm1hcCgoZSkgPT4gKHsgbmFtZTogZS5maWxlLnNwbGl0KCcvJykucG9wKCksIGRlc2M6IGUuZXJyb3IsIG5vdGU6ICdicm9rZW4nIH0pKSxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ25ldycpIHtcbiAgICAgIGlmIChidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIHJlZnMuc2Vzc2lvbiA9IG51bGxcbiAgICAgIHJlZnMuYWxsRXZlbnRzID0gW11cbiAgICAgIHJlZnMucGVyc2lzdGVkID0gMFxuICAgICAgcmVmcy5yZXdpbmRVbmRvID0gbnVsbFxuICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgc2V0U2VudChbXSlcbiAgICAgIHNldE1vZGVsKGRlZmF1bHRNb2RlbCgpKVxuICAgICAgc2V0RWZmb3J0KGRlZmF1bHRFZmZvcnQoKSlcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKCduZXcgc2Vzc2lvbicpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Jld2luZCcpIHtcbiAgICAgIGlmIChidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIGlmICh1c2VyRW50cmllcyhkZXJpdmVkKCkpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZsYXNoKCdub3RoaW5nIHRvIHJld2luZCB5ZXQnKVxuICAgICAgc2V0UmV3aW5kU3RlcCgncGljaycpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NsZWFyJykge1xuICAgICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ2NsZWFyJywge30pKVxuICAgICAgcmVEZXJpdmUoKVxuICAgICAgZmxhc2goJ2NvbnZlcnNhdGlvbiBjbGVhcmVkJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29tcGFjdCcpIHJldHVybiBwZXJmb3JtQ29tcGFjdGlvbihhcmdzKVxuICAgIGlmIChjLm5hbWUgPT09ICdjb3N0Jykge1xuICAgICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVkKClcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzdGF0ZS51c2FnZUJ5TW9kZWwpXG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHJldHVybiBmbGFzaCgnbm8gdXNhZ2UgeWV0JylcbiAgICAgIGNvbnN0IGNvc3RPZiA9IChieU1vZGVsKSA9PlxuICAgICAgICBPYmplY3QuZW50cmllcyhieU1vZGVsKS5yZWR1Y2UoKHN1bSwgW25hbWUsIHVzYWdlXSkgPT4gc3VtICsgZXN0aW1hdGVDb3N0KGZpbmRNb2RlbChtb2RlbHMsIG5hbWUpLCB1c2FnZSksIDApXG4gICAgICBjb25zdCBzcGVudCA9IGNvc3RPZihzdGF0ZS51c2FnZUJ5TW9kZWwpXG4gICAgICBjb25zdCBhY3RpdmUgPSBjb3N0T2Yoc3RhdGUudXNhZ2VBY3RpdmVCeU1vZGVsKVxuICAgICAgY29uc3QgeyBwcm9tcHRUb2tlbnMsIGNvbXBsZXRpb25Ub2tlbnMgfSA9IHN0YXRlLnVzYWdlXG4gICAgICBjb25zdCBiYXNlID0gYCQke3NwZW50LnRvRml4ZWQoNCl9IHNwZW50IFx1MDBCNyAke3Byb21wdFRva2Vucy50b0xvY2FsZVN0cmluZygpfSBpbiBcdTAwQjcgJHtjb21wbGV0aW9uVG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IG91dGBcbiAgICAgIGZsYXNoKHNwZW50IC0gYWN0aXZlID4gMC4wMDAwNSA/IGAke2Jhc2V9IFx1MDBCNyBjdXJyZW50IGNvbnZlcnNhdGlvbiAkJHthY3RpdmUudG9GaXhlZCg0KX1gIDogYmFzZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnZXhwb3J0Jykge1xuICAgICAgY29uc3QgZmlsZSA9IGpvaW4oY3dkLCBgcGljby1leHBvcnQtJHtEYXRlLm5vdygpfS5tZGApXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZSwgdHJhbnNjcmlwdFRvTWFya2Rvd24oZGVyaXZlZCgpLnRyYW5zY3JpcHQsIHsgdGl0bGU6IGBwaWNvIHNlc3Npb24gXHUwMEI3ICR7Y3dkfWAgfSkpXG4gICAgICBmbGFzaChgZXhwb3J0ZWQgdG8gJHtmaWxlfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZWZyZXNoQXV0aFByb3ZpZGVycygpIHtcbiAgICBjb25zdCBvcGVuYWkgPSBhd2FpdCBvcGVuYWlTdGF0dXMoKS5jYXRjaCgoKSA9PiAoeyBjb25uZWN0ZWQ6IGZhbHNlLCBlbWFpbDogbnVsbCB9KSlcbiAgICBzZXRBdXRoUHJvdmlkZXJzKFtcbiAgICAgIHsgaWQ6ICdvcGVuYWknLCBsYWJlbDogJ09wZW5BSSBcdTAwQjcgQ2hhdEdQVCAvIENvZGV4IHBsYW4nLCBjb25uZWN0ZWQ6IG9wZW5haS5jb25uZWN0ZWQsIGVtYWlsOiBvcGVuYWkuZW1haWwgfSxcbiAgICBdKVxuICB9XG5cbiAgZnVuY3Rpb24gb3BlbkNvbm5lY3RQYW5lbCgpIHtcbiAgICBzZXRTaG93Q29ubmVjdFBhbmVsKHRydWUpXG4gICAgcmVmcmVzaEF1dGhQcm92aWRlcnMoKVxuICB9XG5cbiAgZnVuY3Rpb24gY29ubmVjdFByb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgaWYgKHByb3ZpZGVyLmlkICE9PSAnb3BlbmFpJykgcmV0dXJuXG4gICAgc2V0U2hvd0Nvbm5lY3RQYW5lbChmYWxzZSlcbiAgICBmbGFzaCgnb3BlbmluZyB5b3VyIGJyb3dzZXIgZm9yIENoYXRHUFQgc2lnbi1pbi4uLicpXG4gICAgY29ubmVjdE9wZW5BSSgpXG4gICAgICAudGhlbihhc3luYyAoeyBlbWFpbCB9KSA9PiB7XG4gICAgICAgIGJvb3QucHJvdmlkZXJzID0gWy4uLm5ldyBTZXQoWy4uLmJvb3QucHJvdmlkZXJzLCAnY29kZXgnXSldXG4gICAgICAgIGNvbnN0IGNyZWRzID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgICBjb25zdCBjb2RleCA9IChhd2FpdCBsb2FkQ29kZXhNb2RlbHMoY3JlZHMpKS5tYXAoKG0pID0+ICh7IC4uLm0sIGF2YWlsYWJsZTogdHJ1ZSwga2V5SGludDogJy9jb25uZWN0JyB9KSlcbiAgICAgICAgYm9vdC5tb2RlbHMgPSBbLi4uYm9vdC5tb2RlbHMuZmlsdGVyKChtKSA9PiBtLnByb3ZpZGVyICE9PSAnY29kZXgnKSwgLi4uY29kZXhdXG4gICAgICAgIHJlRGVyaXZlKClcbiAgICAgICAgZmxhc2goYGNvbm5lY3RlZCBhcyAke2VtYWlsIHx8ICd5b3VyIENoYXRHUFQgYWNjb3VudCd9IFx1MDBCNyAke2NvZGV4Lmxlbmd0aH0gY29kZXggbW9kZWxzIHVubG9ja2VkIGluIC9tb2RlbGApXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IGZsYXNoKGBjb25uZWN0IGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCAxMjApfWApKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdFByb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgaWYgKHByb3ZpZGVyLmlkICE9PSAnb3BlbmFpJykgcmV0dXJuXG4gICAgYXdhaXQgZGlzY29ubmVjdE9wZW5BSSgpLmNhdGNoKCgpID0+IHt9KVxuICAgIGJvb3QucHJvdmlkZXJzID0gYm9vdC5wcm92aWRlcnMuZmlsdGVyKChwKSA9PiBwICE9PSAnY29kZXgnKVxuICAgIGJvb3QubW9kZWxzID0gYm9vdC5tb2RlbHMubWFwKChtKSA9PiAobS5wcm92aWRlciA9PT0gJ2NvZGV4JyA/IHsgLi4ubSwgYXZhaWxhYmxlOiBmYWxzZSB9IDogbSkpXG4gICAgaWYgKG1vZGVsKCkucHJvdmlkZXIgPT09ICdjb2RleCcpIHNldE1vZGVsKGRlZmF1bHRNb2RlbCgpKVxuICAgIHJlZnJlc2hBdXRoUHJvdmlkZXJzKClcbiAgICBmbGFzaCgnZGlzY29ubmVjdGVkIGZyb20gQ2hhdEdQVCcpXG4gIH1cblxuICBmdW5jdGlvbiByZWZyZXNoU2Vzc2lvbnMoc2NvcGVJbmRleCkge1xuICAgIHNldFJlc3VtZUxvYWRpbmcodHJ1ZSlcbiAgICBsaXN0U2Vzc2lvbnMoeyBzY29wZTogUkVTVU1FX1NDT1BFU1tzY29wZUluZGV4XSwgcm9vdCB9KVxuICAgICAgLnRoZW4oKHNlc3Npb25zKSA9PiBzZXRSZXN1bWVTZXNzaW9ucyhzZXNzaW9ucy5maWx0ZXIoKHMpID0+IHMuaGVhZGVyLmlkICE9PSByZWZzLnNlc3Npb24/LmlkKSkpXG4gICAgICAuZmluYWxseSgoKSA9PiBzZXRSZXN1bWVMb2FkaW5nKGZhbHNlKSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3J0ZW5QYXRoKHBhdGgpIHtcbiAgICBjb25zdCBob21lID0gaG9tZWRpcigpXG4gICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChob21lKSA/IHBhdGgucmVwbGFjZShob21lLCAnficpIDogcGF0aFxuICB9XG5cbiAgZnVuY3Rpb24gb3BlblByb2plY3RQYW5lbCgpIHtcbiAgICBzZXRTaG93UHJvamVjdFBhbmVsKHRydWUpXG4gICAgc2V0UHJvamVjdHNMb2FkaW5nKHRydWUpXG4gICAgbGlzdFNlc3Npb25zKHsgc2NvcGU6ICdldmVyeXdoZXJlJywgcm9vdCB9KVxuICAgICAgLnRoZW4oKG1ldGFzKSA9PiB7XG4gICAgICAgIGNvbnN0IGJ5Um9vdCA9IG5ldyBNYXAoKVxuICAgICAgICBmb3IgKGNvbnN0IG0gb2YgbWV0YXMpIHtcbiAgICAgICAgICBjb25zdCBlbnRyeSA9IGJ5Um9vdC5nZXQobS5oZWFkZXIucm9vdClcbiAgICAgICAgICBpZiAoIWVudHJ5KSB7XG4gICAgICAgICAgICBieVJvb3Quc2V0KG0uaGVhZGVyLnJvb3QsIHtcbiAgICAgICAgICAgICAgcm9vdDogbS5oZWFkZXIucm9vdCxcbiAgICAgICAgICAgICAgcGF0aDogc2hvcnRlblBhdGgobS5oZWFkZXIucm9vdCksXG4gICAgICAgICAgICAgIGxhdGVzdDogbSxcbiAgICAgICAgICAgICAgY291bnQ6IDEsXG4gICAgICAgICAgICAgIGN1cnJlbnQ6IG0uaGVhZGVyLnJvb3QgPT09IGJvb3Qucm9vdCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVudHJ5LmNvdW50KytcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0UHJvamVjdHMoWy4uLmJ5Um9vdC52YWx1ZXMoKV0pXG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4gc2V0UHJvamVjdHNMb2FkaW5nKGZhbHNlKSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHN3aXRjaFByb2plY3QobWV0YSkge1xuICAgIGlmIChidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJldmlvdXNNY3AgPSBib290Lm1jcFxuICAgICAgY29uc3QgbmV4dCA9IGF3YWl0IGJvb3QucmVidWlsZChtZXRhLmhlYWRlci5yb290KVxuICAgICAgcHJldmlvdXNNY3AuY2xvc2VBbGwoKS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgIHByb2Nlc3MuY2hkaXIobmV4dC5jd2QpXG4gICAgICBPYmplY3QuYXNzaWduKGJvb3QsIG5leHQpXG4gICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgXFx4MWJdMDtwaWNvIFx1MDBCNyAke25leHQucm9vdC5zcGxpdCgnLycpLnBvcCgpfVxceDA3YClcbiAgICAgIG5leHQubWNwLmNvbm5lY3RBbGwoKVxuICAgICAgc2V0TWNwU2VydmVycyhuZXh0Lm1jcC5saXN0KCkpXG4gICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICBzZXRGaWxlTGlzdChbXSlcbiAgICAgIGF3YWl0IHJlc3VtZVNlc3Npb24obWV0YSlcbiAgICAgIGZsYXNoKGBzd2l0Y2hlZCB0byAke25leHQuZGlzcGxheUN3ZH1gKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYHN3aXRjaCBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlU2Vzc2lvbk1ldGEobWV0YSkge1xuICAgIGlmIChyZWZzLnNlc3Npb24/LmlkID09PSBtZXRhLmhlYWRlci5pZCkge1xuICAgICAgcmV0dXJuIGZsYXNoKCdjYW5ub3QgZGVsZXRlIHRoZSBhY3RpdmUgc2Vzc2lvbiBcdTAwQjcgL25ldyBmaXJzdCwgdGhlbiBkZWxldGUgaXQnKVxuICAgIH1cbiAgICBjb25zdCBhcm1lZCA9IHJlZnMuZGVsZXRlQXJtXG4gICAgaWYgKCFhcm1lZCB8fCBhcm1lZC5maWxlICE9PSBtZXRhLmZpbGUgfHwgRGF0ZS5ub3coKSAtIGFybWVkLmF0ID4gMzAwMCkge1xuICAgICAgcmVmcy5kZWxldGVBcm0gPSB7IGZpbGU6IG1ldGEuZmlsZSwgYXQ6IERhdGUubm93KCkgfVxuICAgICAgcmV0dXJuIGZsYXNoKGBjdHJsK3ggYWdhaW4gdG8gZGVsZXRlIFwiJHttZXRhLnRpdGxlLnNsaWNlKDAsIDUwKX1cImApXG4gICAgfVxuICAgIHJlZnMuZGVsZXRlQXJtID0gbnVsbFxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkZWxldGVTZXNzaW9uKG1ldGEuZmlsZSlcbiAgICAgIHJlZnJlc2hTZXNzaW9ucyhyZXN1bWVTY29wZSgpKVxuICAgICAgZmxhc2goJ3Nlc3Npb24gZGVsZXRlZCcpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgZGVsZXRlIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZXN1bWVTZXNzaW9uKG1ldGEpIHtcbiAgICBzZXRTaG93UmVzdW1lUGFuZWwoZmFsc2UpXG4gICAgc2V0U2hvd1Byb2plY3RQYW5lbChmYWxzZSlcbiAgICBpZiAobWV0YS5oZWFkZXIucm9vdCAhPT0gYm9vdC5yb290KSByZXR1cm4gc3dpdGNoUHJvamVjdChtZXRhKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGhlYWRlciwgZXZlbnRzIH0gPSBhd2FpdCBsb2FkU2Vzc2lvbihtZXRhLmZpbGUpXG4gICAgICByZWZzLnNlc3Npb24gPSBvcGVuU2Vzc2lvbih7IGZpbGU6IG1ldGEuZmlsZSwgaGVhZGVyIH0pXG4gICAgICByZWZzLmFsbEV2ZW50cyA9IFsuLi5ldmVudHNdXG4gICAgICByZWZzLnBlcnNpc3RlZCA9IGV2ZW50cy5sZW5ndGhcbiAgICAgIHJlZnMucmV3aW5kVW5kbyA9IG51bGxcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGNvbnN0IGNhdGFsb2dNYXRjaCA9IG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IGRlcml2ZWQoKS5tb2RlbCAmJiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpXG4gICAgICBjb25zdCByZXN0b3JlZCA9IGRlcml2ZWQoKS5tb2RlbFxuICAgICAgICAmJiAoY2F0YWxvZ01hdGNoIHx8IGFkaG9jTW9kZWwoZGVyaXZlZCgpLm1vZGVsLCBib290LnByb3ZpZGVycykpXG4gICAgICBpZiAocmVzdG9yZWQpIHtcbiAgICAgICAgc2V0TW9kZWwocmVzdG9yZWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRNb2RlbChkZWZhdWx0TW9kZWwoKSlcbiAgICAgICAgaWYgKGRlcml2ZWQoKS5tb2RlbCkgZmxhc2goYG1vZGVsICR7ZGVyaXZlZCgpLm1vZGVsfSB1bmF2YWlsYWJsZSwgdXNpbmcgJHtkZWZhdWx0TW9kZWwoKS5uYW1lfWApXG4gICAgICB9XG4gICAgICBzZXRFZmZvcnQoZGVyaXZlZCgpLmVmZm9ydCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdEVmZm9ydCgpIDogZGVyaXZlZCgpLmVmZm9ydClcbiAgICAgIHNldFNlbnQodXNlckVudHJpZXMoZGVyaXZlZCgpKS5tYXAoKGUpID0+ICh7IHRleHQ6IHJlY2FsbFRleHQoZSksIGF0OiBoZWFkZXIuY3JlYXRlZEF0IH0pKSlcbiAgICAgIHNldEZvbGxvdyh0cnVlKVxuICAgICAgZmxhc2goYHJlc3VtZWQgXHUwMEI3ICR7bWV0YS50dXJuc30gJHttZXRhLnR1cm5zID09PSAxID8gJ3R1cm4nIDogJ3R1cm5zJ30gXHUwMEI3ICR7dGltZUFnbyhtZXRhLmF0KX1gKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYHJlc3VtZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb3Blbkhpc3RvcnlTZWFyY2goKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHNlbnQoKVxuICAgIHNldEhpc3RQcm9tcHRzKGRlZHVwZVByb21wdHMoc2Vzc2lvbikpXG4gICAgc2V0U2hvd0hpc3RvcnlQYW5lbCh0cnVlKVxuICAgIHNldEhpc3RTY29wZSgwKVxuICB9XG5cbiAgZnVuY3Rpb24gZGVkdXBlUHJvbXB0cyhwb29sKSB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQoKVxuICAgIGNvbnN0IG91dCA9IFtdXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBbLi4ucG9vbF0uc29ydCgoYSwgYikgPT4gYi5hdCAtIGEuYXQpKSB7XG4gICAgICBpZiAoc2Vlbi5oYXMoZW50cnkudGV4dCkpIGNvbnRpbnVlXG4gICAgICBzZWVuLmFkZChlbnRyeS50ZXh0KVxuICAgICAgb3V0LnB1c2goZW50cnkpXG4gICAgfVxuICAgIHJldHVybiBvdXRcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHN3aXRjaEhpc3RTY29wZShuZXh0KSB7XG4gICAgc2V0SGlzdFNjb3BlKG5leHQpXG4gICAgaWYgKG5leHQgPT09IDApIHJldHVybiBzZXRIaXN0UHJvbXB0cyhkZWR1cGVQcm9tcHRzKHNlbnQoKSkpXG4gICAgY29uc3QgcHJvamVjdCA9IGF3YWl0IGxvYWRQcm9qZWN0UHJvbXB0cyhyb290KVxuICAgIGlmIChuZXh0ID09PSAxKSByZXR1cm4gc2V0SGlzdFByb21wdHMoZGVkdXBlUHJvbXB0cyhbLi4uc2VudCgpLCAuLi5wcm9qZWN0XSkpXG4gICAgY29uc3QgZ2xvYmFsID0gYXdhaXQgbG9hZEdsb2JhbFByb21wdHMoKVxuICAgIHNldEhpc3RQcm9tcHRzKGRlZHVwZVByb21wdHMoWy4uLnNlbnQoKSwgLi4ucHJvamVjdCwgLi4uZ2xvYmFsXSkpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBwZXJmb3JtUmV3aW5kKG9wdCkge1xuICAgIGNvbnN0IHRhcmdldCA9IHJld2luZFRhcmdldCgpXG4gICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVkKClcbiAgICBjb25zdCB7IGVkaXRzIH0gPSByZXdpbmRTdGF0cyhzdGF0ZSwgdGFyZ2V0LmluZGV4KVxuICAgIGNvbnN0IGVkaXRzTGFiZWwgPSBgJHtlZGl0cy5sZW5ndGh9ICR7ZWRpdHMubGVuZ3RoID09PSAxID8gJ2VkaXQnIDogJ2VkaXRzJ31gXG4gICAgbGV0IHJldmVydGVkID0gW11cbiAgICBsZXQgc2tpcHBlZCA9IFtdXG5cbiAgICBpZiAob3B0LmtleSA9PT0gJ2JvdGgnIHx8IG9wdC5rZXkgPT09ICdjb2RlJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmV2ZXJ0RWRpdHMoZWRpdHMpXG4gICAgICByZXZlcnRlZCA9IHJlc3VsdC5yZXZlcnRlZFxuICAgICAgc2tpcHBlZCA9IHJlc3VsdC5za2lwcGVkXG4gICAgfVxuXG4gICAgbGV0IHN1bW1hcnlUZXh0ID0gbnVsbFxuICAgIGlmIChvcHQua2V5ID09PSAnc3VtbWFyeScpIHtcbiAgICAgIGNvbnN0IHRhaWwgPSBzdGF0ZS50cmFuc2NyaXB0LnNsaWNlKHRhcmdldC5pbmRleClcbiAgICAgIGNvbnN0IHRleHQgPSB0YWlsLmZpbHRlcigobSkgPT4gbS50ZXh0KS5tYXAoKG0pID0+IGAke20ua2luZH06ICR7bS50ZXh0fWApLmpvaW4oJ1xcbicpXG4gICAgICBmbGFzaCgnc3VtbWFyaXppbmcuLi4nKVxuICAgICAgc3VtbWFyeVRleHQgPSBhd2FpdCBzdW1tYXJpemVUZXh0KHsgdGV4dCwgbW9kZWxOYW1lOiBtb2RlbCgpLm5hbWUgfSkuY2F0Y2goKCkgPT5cbiAgICAgICAgdGFpbC5maWx0ZXIoKG0pID0+IG0udGV4dCkuc2xpY2UoMCwgMykubWFwKChtKSA9PiBtLnRleHQuc3BsaXQoL1xccysvKS5zbGljZSgwLCA2KS5qb2luKCcgJykpLmpvaW4oJyBcdTAwQjcgJyksXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnQgPSBtYWtlRXZlbnQoJ3Jld2luZCcsIHsgdGFyZ2V0OiB0YXJnZXQuZXZlbnRJZCwgbW9kZTogb3B0LmtleSwgc3VtbWFyeVRleHQsIHJldmVydGVkLCBza2lwcGVkIH0pXG4gICAgcGVyc2lzdChldmVudClcbiAgICByZWZzLnJld2luZFVuZG8gPSB7IHJld2luZElkOiBldmVudC5pZCwgZWRpdHM6IGVkaXRzLmZpbHRlcigoZSkgPT4gcmV2ZXJ0ZWQuaW5jbHVkZXMoZS5jYWxsSWQpKSB9XG4gICAgcmVEZXJpdmUoKVxuICAgIGlmIChvcHQua2V5ICE9PSAnY29kZScpIHNldElucHV0KHJlY2FsbFRleHQodGFyZ2V0KSlcblxuICAgIGNvbnN0IHNraXBwZWROb3RlID0gc2tpcHBlZC5sZW5ndGggPyBgIFx1MDBCNyBza2lwcGVkICR7c2tpcHBlZC5sZW5ndGh9IGRyaWZ0ZWRgIDogJydcbiAgICBpZiAob3B0LmtleSA9PT0gJ2NvZGUnKSBmbGFzaChgcmV2ZXJ0ZWQgJHtlZGl0c0xhYmVsfSwgY29udmVyc2F0aW9uIGtlcHQke3NraXBwZWROb3RlfSBcdTAwQjcgY3RybCt6IHRvIHVuZG9gKVxuICAgIGVsc2UgaWYgKG9wdC5rZXkgPT09ICdzdW1tYXJ5JykgZmxhc2goYHJld291bmQgYW5kIHN1bW1hcml6ZWQke3NraXBwZWROb3RlfSBcdTAwQjcgY3RybCt6IHRvIHVuZG9gKVxuICAgIGVsc2UgaWYgKG9wdC5rZXkgPT09ICdib3RoJykgZmxhc2goYHJld291bmQsICR7ZWRpdHNMYWJlbH0gcmV2ZXJ0ZWQke3NraXBwZWROb3RlfSBcdTAwQjcgY3RybCt6IHRvIHVuZG9gKVxuICAgIGVsc2UgZmxhc2goYHJld291bmQsIGZpbGUgY2hhbmdlcyBrZXB0IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgc2V0UmV3aW5kU3RlcChudWxsKVxuICAgIHNldFJld2luZFRhcmdldChudWxsKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gdW5kb1Jld2luZCgpIHtcbiAgICBjb25zdCB1bmRvID0gcmVmcy5yZXdpbmRVbmRvXG4gICAgaWYgKCF1bmRvKSByZXR1cm5cbiAgICBjb25zdCB7IHNraXBwZWQgfSA9IGF3YWl0IHJlYXBwbHlFZGl0cyh1bmRvLmVkaXRzKVxuICAgIHBlcnNpc3QobWFrZUV2ZW50KCdyZXdpbmRfdW5kbycsIHsgcmV3aW5kSWQ6IHVuZG8ucmV3aW5kSWQgfSkpXG4gICAgcmVmcy5yZXdpbmRVbmRvID0gbnVsbFxuICAgIHJlRGVyaXZlKClcbiAgICBmbGFzaChza2lwcGVkLmxlbmd0aCA/IGByZXdpbmQgdW5kb25lIFx1MDBCNyAke3NraXBwZWQubGVuZ3RofSBmaWxlKHMpIGRyaWZ0ZWRgIDogJ3Jld2luZCB1bmRvbmUnKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVjYWxsVGV4dChlbnRyeSkge1xuICAgIHJldHVybiBpbnB1dFRleHRGcm9tQ29udGVudChlbnRyeS5jb250ZW50ID8/IGVudHJ5LnRleHQsIHtcbiAgICAgIGF0dGFjaG1lbnRzOiByZWZzLmF0dGFjaG1lbnRzLFxuICAgICAgbmV4dElkOiAoKSA9PiArK3JlZnMuaW1hZ2VDb3VudCxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgYW55UGFuZWwgPSAoKSA9PlxuICAgIHNob3dNb2RlbFBhbmVsKCkgfHwgc2hvd0VmZm9ydFBhbmVsKCkgfHwgc2hvd0hpc3RvcnlQYW5lbCgpIHx8IHNob3dSZXN1bWVQYW5lbCgpIHx8IHNob3dNY3BQYW5lbCgpIHx8XG4gICAgc2hvd1Byb2plY3RQYW5lbCgpIHx8IHNob3dTaGVsbHNQYW5lbCgpIHx8IHNob3dXYWtldXBzUGFuZWwoKSB8fCBzaG93Q29ubmVjdFBhbmVsKCkgfHxcbiAgICBpbmZvUGFuZWwoKSAhPT0gbnVsbCB8fCByZXdpbmRTdGVwKCkgIT09IG51bGxcblxuICBmdW5jdGlvbiBraWxsU2hlbGwoc2hlbGwpIHtcbiAgICBpZiAoc2hlbGwuc3RhdHVzICE9PSAncnVubmluZycpIHJldHVybiBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0gYWxyZWFkeSBleGl0ZWRgKVxuICAgIGNvbnN0IGFybWVkID0gcmVmcy5zaGVsbEtpbGxBcm1cbiAgICBpZiAoIWFybWVkIHx8IGFybWVkLmlkICE9PSBzaGVsbC5pZCB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICByZWZzLnNoZWxsS2lsbEFybSA9IHsgaWQ6IHNoZWxsLmlkLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGsgYWdhaW4gdG8ga2lsbCBzaGVsbCAke3NoZWxsLmlkfWApXG4gICAgfVxuICAgIHJlZnMuc2hlbGxLaWxsQXJtID0gbnVsbFxuICAgIGJvb3Quc2hlbGxzLmtpbGwoc2hlbGwuaWQsICd1c2VyJylcbiAgfVxuXG4gIGNvbnN0IGVmZm9ydEFwcGxpZXMgPSAoKSA9PiAhIW1vZGVsKCkuZWZmb3J0XG5cbiAgZnVuY3Rpb24gc2V0U2Vzc2lvbkVmZm9ydChuZXh0LCB7IGFzRGVmYXVsdCA9IGZhbHNlIH0gPSB7fSkge1xuICAgIHBlcnNpc3QobWFrZUV2ZW50KCdlZmZvcnQnLCB7IHRvOiBuZXh0IH0pKVxuICAgIHNldEVmZm9ydChuZXh0KVxuICAgIGlmIChhc0RlZmF1bHQpIHtcbiAgICAgIHNldERlZmF1bHRFZmZvcnQobmV4dClcbiAgICAgIHdyaXRlQ29uZmlnKHsgZGVmYXVsdEVmZm9ydDogbmV4dCB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgICB9XG4gICAgZmxhc2goYGVmZm9ydDogJHtuZXh0ID8/ICdkZWZhdWx0J30ke2FzRGVmYXVsdCA/ICcgXHUwMEI3IHNhdmVkIGFzIGRlZmF1bHQnIDogJyd9YClcbiAgfVxuXG4gIGNvbnN0IGZtID0gdXNlRm9jdXMoeyBpbml0aWFsOiAnaW5wdXQnIH0pXG4gIGZtLml0ZW0oJ2ZlZWQnKVxuICBmbS5pdGVtKCdpbnB1dCcpXG4gIHVzZUZvY3VzVHJhcChhbnlQYW5lbCgpIHx8IHZpZXcoKSA9PT0gJ2hlbHAnKVxuICB1c2VTZWxlY3Rpb24oe1xuICAgIG9uQ29weTogKHRleHQpID0+IGZsYXNoKGBjb3BpZWQgJHt0ZXh0Lmxlbmd0aH0gJHt0ZXh0Lmxlbmd0aCA9PT0gMSA/ICdjaGFyYWN0ZXInIDogJ2NoYXJhY3RlcnMnfWApLFxuICB9KVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnICYmIGJ1c3koKSAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgaW50ZXJydXB0KClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnYycpIHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgICAgIGlmIChub3cgLSByZWZzLnF1aXRBdCA8IDE1MDApIHtcbiAgICAgICAgYm9vdC5zaGVsbHMua2lsbEFsbCgpXG4gICAgICAgIG1jcC5jbG9zZUFsbCgpLmNhdGNoKCgpID0+IHt9KS5maW5hbGx5KCgpID0+IHByb2Nlc3MuZXhpdCgwKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZnMucXVpdEF0ID0gbm93XG4gICAgICAgIGNvbnN0IHJ1bm5pbmcgPSBib290LnNoZWxscy5ydW5uaW5nKClcbiAgICAgICAgZmxhc2gocnVubmluZyA/IGAke3J1bm5pbmd9ICR7cnVubmluZyA9PT0gMSA/ICdzaGVsbCcgOiAnc2hlbGxzJ30gcnVubmluZyBcdTAwQjcgY3RybCtjIGFnYWluIHRvIGV4aXQgYW5kIGtpbGwgJHtydW5uaW5nID09PSAxID8gJ2l0JyA6ICd0aGVtJ31gIDogJ2N0cmwrYyBhZ2FpbiB0byBleGl0JylcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnbycpIHtcbiAgICAgIHNldFZlcmJvc2UoKHYpID0+ICF2KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdyJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgb3Blbkhpc3RvcnlTZWFyY2goKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgc2V0U2hvd1Jlc3VtZVBhbmVsKHRydWUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAndCcgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIHNldFNob3dNb2RlbFBhbmVsKHRydWUpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3AnICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBvcGVuUHJvamVjdFBhbmVsKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnYicgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIGlmICghZWZmb3J0QXBwbGllcygpKSBmbGFzaChgJHttb2RlbCgpLm5hbWV9IGRvZXMgbm90IHN1cHBvcnQgZWZmb3J0IGNvbnRyb2xgKVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gW251bGwsICdsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnbWF4J11cbiAgICAgICAgY29uc3QgbmV4dCA9IG9yZGVyWyhvcmRlci5pbmRleE9mKGVmZm9ydCgpID8/IG51bGwpICsgMSkgJSBvcmRlci5sZW5ndGhdXG4gICAgICAgIHNldFNlc3Npb25FZmZvcnQobmV4dClcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgc2hvd0hpc3RvcnlQYW5lbCgpKSB7XG4gICAgICBzd2l0Y2hIaXN0U2NvcGUoKGhpc3RTY29wZSgpICsgMSkgJSBISVNUT1JZX1NDT1BFUy5sZW5ndGgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnICYmIHNob3dSZXN1bWVQYW5lbCgpKSB7XG4gICAgICBjb25zdCBuZXh0ID0gKHJlc3VtZVNjb3BlKCkgKyAxKSAlIFJFU1VNRV9TQ09QRVMubGVuZ3RoXG4gICAgICBzZXRSZXN1bWVTY29wZShuZXh0KVxuICAgICAgcmVmcmVzaFNlc3Npb25zKG5leHQpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3onICYmIHJlZnMucmV3aW5kVW5kbyAmJiAhYnVzeSgpICYmIHZpZXcoKSA9PT0gJ2NoYXQnKSB7XG4gICAgICB1bmRvUmV3aW5kKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGVsYXBzZWQgPSBidXN5KCkgPyBNYXRoLm1heCgwLCBNYXRoLmZsb29yKChEYXRlLm5vdygpIC0gc3RhcnRlZEF0KCkpIC8gMTAwMCkpIDogMFxuXG4gIGNvbnN0IHNsYXNoUXVlcnkgPSBpbnB1dCgpLnN0YXJ0c1dpdGgoJy8nKSA/IGlucHV0KCkuc2xpY2UoMSkgOiBudWxsXG4gIGNvbnN0IHNob3dDb21tYW5kcyA9IHNsYXNoUXVlcnkgIT09IG51bGwgJiYgIXNsYXNoUXVlcnkuaW5jbHVkZXMoJyAnKSAmJiAhYW55UGFuZWwoKVxuICBjb25zdCBtYXRjaGVkQ29tbWFuZHMgPSAhc2hvd0NvbW1hbmRzXG4gICAgPyBbXVxuICAgIDogY21kQ3ljbGUoKVxuICAgICAgPyBjbWRDeWNsZSgpLm1hdGNoZXNcbiAgICAgIDogYWxsQ29tbWFuZHMuZmlsdGVyKChjKSA9PiBjLm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHNsYXNoUXVlcnkudG9Mb3dlckNhc2UoKSkpXG5cbiAgY29uc3QgYXRNYXRjaCA9IGlucHV0KCkubWF0Y2goLyhefFtcXHMoXSlAKFteXFxzQF0qKSQvKVxuICBjb25zdCBzaG93RmlsZXMgPSBhdE1hdGNoICE9PSBudWxsICYmICFzaG93Q29tbWFuZHMgJiYgIWZpbGVzRGlzbWlzc2VkKCkgJiYgIWFueVBhbmVsKClcbiAgaWYgKHNob3dGaWxlcykge1xuICAgIGxpc3RGaWxlcyhjd2QpLnRoZW4oKGZpbGVzKSA9PiB7XG4gICAgICBpZiAoZmlsZXMgIT09IGZpbGVMaXN0KCkpIHNldEZpbGVMaXN0KGZpbGVzKVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbWF0Y2hlZEZpbGVzID0gc2hvd0ZpbGVzXG4gICAgPyBmaWxlTGlzdCgpXG4gICAgICAgIC5tYXAoKGYpID0+IFtmdXp6eVNjb3JlKGF0TWF0Y2hbMl0sIGYpLCBmXSlcbiAgICAgICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICAgICAgICAubWFwKChbLCBmXSkgPT4gZilcbiAgICA6IFtdXG5cbiAgZnVuY3Rpb24gcGlja0ZpbGUoZikge1xuICAgIGNvbnN0IHYgPSBpbnB1dCgpXG4gICAgY29uc3QgYXQgPSB2Lmxhc3RJbmRleE9mKCdAJylcbiAgICBjb25zdCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVGb3IoZilcbiAgICBjb25zdCBmdWxsID0gam9pbihib290LmN3ZCwgZilcbiAgICBpZiAobWVkaWFUeXBlICYmIGV4aXN0c1N5bmMoZnVsbCkpIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHsrK3JlZnMuaW1hZ2VDb3VudH1dYFxuICAgICAgcmVmcy5hdHRhY2htZW50cy5zZXQocGxhY2Vob2xkZXIsIHsgcGF0aDogZnVsbCwgbWVkaWFUeXBlIH0pXG4gICAgICBzZXRJbnB1dCh2LnNsaWNlKDAsIGF0KSArIHBsYWNlaG9sZGVyICsgJyAnKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRJbnB1dCh2LnNsaWNlKDAsIGF0ICsgMSkgKyBmICsgJyAnKVxuICAgIH1cbiAgICBzZXRGaWxlSW5kZXgoMClcbiAgfVxuXG4gIGNvbnN0IGNvbXBDdHggPSBjb21wbGV0aW5nKCkgPyBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlOiBpbnB1dCgpLCByZXNvbHZlOiBjb21wbGV0aW9uU291cmNlIH0pIDogbnVsbFxuICBjb25zdCBzaG93Q29tcGxldGlvbiA9ICEhY29tcEN0eCAmJiBjb21wQ3R4Lm1hdGNoZXMubGVuZ3RoID4gMCAmJiAhc2hvd0NvbW1hbmRzICYmICFzaG93RmlsZXMgJiYgIWFueVBhbmVsKClcblxuICBjb25zdCByZXdpbmRFbnRyaWVzID0gKCkgPT4gdXNlckVudHJpZXMoZGVyaXZlZCgpKVxuICBjb25zdCByZXdpbmRPcHRpb25zID0gKCgpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSByZXdpbmRUYXJnZXQoKVxuICAgIGlmICghdGFyZ2V0KSByZXR1cm4gW11cbiAgICBjb25zdCB7IG1zZ3MsIGVkaXRzIH0gPSByZXdpbmRTdGF0cyhkZXJpdmVkKCksIHRhcmdldC5pbmRleClcbiAgICBjb25zdCBlID0gZWRpdHMubGVuZ3RoXG4gICAgY29uc3QgZWRpdHNMYWJlbCA9IGAke2V9ICR7ZSA9PT0gMSA/ICdlZGl0JyA6ICdlZGl0cyd9YFxuICAgIGNvbnN0IG9wdHMgPSBbXVxuICAgIGlmIChlID4gMCkgb3B0cy5wdXNoKHsga2V5OiAnYm90aCcsIGxhYmVsOiAncmVzdG9yZSBjb2RlIGFuZCBjb252ZXJzYXRpb24nLCBkZXNjOiBgY2hhdCByZXR1cm5zIHRvIHRoaXMgbWVzc2FnZSBcdTAwQjcgJHtlZGl0c0xhYmVsfSByZXZlcnRlZGAgfSlcbiAgICBvcHRzLnB1c2goe1xuICAgICAga2V5OiAnY2hhdCcsXG4gICAgICBsYWJlbDogZSA+IDAgPyAncmVzdG9yZSBjb252ZXJzYXRpb24gb25seScgOiAncmVzdG9yZSBjb252ZXJzYXRpb24nLFxuICAgICAgZGVzYzogZSA+IDAgPyAnY2hhdCByZXR1cm5zIHRvIHRoaXMgbWVzc2FnZSBcdTAwQjcgZmlsZSBjaGFuZ2VzIGtlcHQnIDogYGNoYXQgcmV0dXJucyB0byB0aGlzIG1lc3NhZ2UgXHUwMEI3IGRyb3BzICR7bXNnc30gZW50cmllc2AsXG4gICAgfSlcbiAgICBpZiAoZSA+IDApIG9wdHMucHVzaCh7IGtleTogJ2NvZGUnLCBsYWJlbDogJ3Jlc3RvcmUgY29kZSBvbmx5JywgZGVzYzogYGNvbnZlcnNhdGlvbiBrZXB0IFx1MDBCNyAke2VkaXRzTGFiZWx9IHJldmVydGVkYCB9KVxuICAgIG9wdHMucHVzaCh7IGtleTogJ3N1bW1hcnknLCBsYWJlbDogJ3Jld2luZCBhbmQga2VlcCBhIHN1bW1hcnknLCBkZXNjOiAnZHJvcHBlZCBlbnRyaWVzIGNvbGxhcHNlIGludG8gYSBvbmUtbGluZSBub3RlJyB9KVxuICAgIHJldHVybiBvcHRzXG4gIH0pKClcblxuICBjb25zdCB7IHVzYWdlQWN0aXZlOiB1c2FnZSB9ID0gZGVyaXZlZCgpXG4gIHNoZWxsc1ZlcnNpb24oKVxuICBjb25zdCBydW5uaW5nU2hlbGxzID0gYm9vdC5zaGVsbHMucnVubmluZygpXG4gIGNvbnN0IHBlbmRpbmdXYWtldXBzID0gYm9vdC53YWtldXBzLnBlbmRpbmcoKVxuXG4gIGlmICh2aWV3KCkgPT09ICdoZWxwJykge1xuICAgIHJldHVybiA8SGVscCBjb21tYW5kcz17Q09NTUFORFN9IG9uQ2xvc2U9eygpID0+IHNldFZpZXcoJ2NoYXQnKX0gLz5cbiAgfVxuXG4gIGhpZ2hsaWdodFZlcnNpb24oKVxuXG4gIGNvbnN0IGl0ZW1zID0gWy4uLmRlcml2ZWQoKS50cmFuc2NyaXB0LCAuLi5vdmVybGF5KCldXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6ICcxMDAlJyB9fT5cbiAgICAgIDxTY3JvbGxCb3hcbiAgICAgICAgc3R5bGU9e3sgZmxleEdyb3c6IDEgfX1cbiAgICAgICAgZm9jdXNlZD17Zm0uaXMoJ2ZlZWQnKX1cbiAgICAgICAgc2Nyb2xsT2Zmc2V0PXtmb2xsb3coKSA/IDFlOSA6IG9mZnNldCgpfVxuICAgICAgICBvblNjcm9sbD17KG5leHQsIG1ldGEpID0+IHsgc2V0Rm9sbG93KCEhbWV0YT8uYXRCb3R0b20pOyBzZXRPZmZzZXQobmV4dCkgfX1cbiAgICAgICAgc2Nyb2xsYmFyXG4gICAgICA+XG4gICAgICAgIHtpdGVtcy5sZW5ndGggPT09IDAgJiYgPEJhbm5lciB2ZXJzaW9uPXt2ZXJzaW9ufSBjd2Q9e2Jvb3QuZGlzcGxheUN3ZH0gbW9kZWxOYW1lPXttb2RlbCgpLm5hbWV9IC8+fVxuICAgICAgICB7aXRlbXMubWFwKChpdGVtLCBpKSA9PiA8TWVzc2FnZSBrZXk9e2l9IGl0ZW09e2l0ZW19IHZlcmJvc2U9e3ZlcmJvc2UoKX0gLz4pfVxuICAgICAgICB7c3RyZWFtaW5nKCkgIT09IG51bGwgJiYgc3RyZWFtaW5nKCkgIT09ICcnICYmIChcbiAgICAgICAgICA8TWVzc2FnZSBrZXk9XCJzdHJlYW1pbmdcIiBpdGVtPXt7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0OiBgJHtzdHJlYW1pbmcoKX1cdTI1OEJgIH19IC8+XG4gICAgICAgICl9XG4gICAgICA8L1Njcm9sbEJveD5cblxuICAgICAge3F1ZXVlZCgpLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHtxdWV1ZWQoKS5tYXAoKHEsIGkpID0+IChcbiAgICAgICAgICAgIDxib3gga2V5PXtpfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnXHUyMDNBICd9PC90ZXh0PlxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBNVVRFRCB9fT57cS5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICB7aSA9PT0gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQsIGRpbTogdHJ1ZSB9fT57JyAgcGVuZGluZyBcdTAwQjcgXHUyMTkxIHRvIGVkaXQnfTwvdGV4dD59XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuXG4gICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgZmxleERpcmVjdGlvbjogJ3JvdycsIHBhZGRpbmdYOiAyLCBwYWRkaW5nWTogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCksIGJvbGQ6IHRydWUgfX0+eydcdTI3NkYnfTwvdGV4dD5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAge2Rlcml2ZWQoKS50aXRsZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBwb3NpdGlvbjogJ2Fic29sdXRlJywgdG9wOiAwLCByaWdodDogMCB9fT5cbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGJnOiBhY2NlbnQoKSwgY29sb3I6ICdibGFjaycsIGJvbGQ6IHRydWUgfX0+e2AgJHtkZXJpdmVkKCkudGl0bGV9IGB9PC90ZXh0PlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgICA8VGV4dEFyZWFcbiAgICAgICAgICB2YWx1ZT17aW5wdXQoKX1cbiAgICAgICAgICBvbkNoYW5nZT17KHYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IHBsYWNlaG9sZGVyaXplSW1hZ2VQYXRocyh2LCB7XG4gICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiByZWZzLmF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgICBuZXh0SWQ6ICgpID0+ICsrcmVmcy5pbWFnZUNvdW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHNldElucHV0KGNvbnZlcnRlZC50ZXh0KVxuICAgICAgICAgICAgc2V0Q21kSW5kZXgoMClcbiAgICAgICAgICAgIHNldENtZEN5Y2xlKG51bGwpXG4gICAgICAgICAgICBzZXRGaWxlSW5kZXgoMClcbiAgICAgICAgICAgIHNldEhpc3RJZHgoLTEpXG4gICAgICAgICAgICBzZXRGaWxlc0Rpc21pc3NlZChmYWxzZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7IGlmIChidXN5KCkpIGludGVycnVwdCgpOyBlbHNlIHsgc2V0SW5wdXQoJycpOyBzZXRDbWRDeWNsZShudWxsKSB9IH19XG4gICAgICAgICAgb25TdWJtaXQ9e3NlbmR9XG4gICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndGFiJyAmJiAhZS5jdHJsICYmICFlLm1ldGEgJiYgc2hvd0NvbW1hbmRzICYmIG1hdGNoZWRDb21tYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN5Y2xlID0gY21kQ3ljbGUoKVxuICAgICAgICAgICAgICBpZiAoIWN5Y2xlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihjbWRJbmRleCgpLCBtYXRjaGVkQ29tbWFuZHMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICBzZXRDbWRDeWNsZSh7IG1hdGNoZXM6IG1hdGNoZWRDb21tYW5kcyB9KVxuICAgICAgICAgICAgICAgIHNldENtZEluZGV4KHN0YXJ0KVxuICAgICAgICAgICAgICAgIHNldElucHV0KCcvJyArIG1hdGNoZWRDb21tYW5kc1tzdGFydF0ubmFtZSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gKGNtZEluZGV4KCkgKyAxKSAlIGN5Y2xlLm1hdGNoZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgc2V0Q21kSW5kZXgobmV4dClcbiAgICAgICAgICAgICAgICBzZXRJbnB1dCgnLycgKyBjeWNsZS5tYXRjaGVzW25leHRdLm5hbWUpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3Bhc3RlJyAmJiBlLnRleHQpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGF0aHMgPSBleHRyYWN0SW1hZ2VQYXRocyhlLnRleHQpXG4gICAgICAgICAgICAgIGlmIChwYXRocy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJzID0gcGF0aHMubWFwKChwYXRoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBbSW1hZ2UgIyR7KytyZWZzLmltYWdlQ291bnR9XWBcbiAgICAgICAgICAgICAgICAgIHJlZnMuYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGgsIG1lZGlhVHlwZTogbWVkaWFUeXBlRm9yKHBhdGgpIH0pXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGNvbnN0IGF0ID0gZS5jdXJzb3IgPz8gZS52YWx1ZS5sZW5ndGhcbiAgICAgICAgICAgICAgICBzZXRJbnB1dChlLnZhbHVlLnNsaWNlKDAsIGF0KSArIHBsYWNlaG9sZGVycy5qb2luKCcgJykgKyBlLnZhbHVlLnNsaWNlKGF0KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnYmFja3NwYWNlJyAmJiBlLmN1cnNvciA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBlLnZhbHVlLnNsaWNlKDAsIGUuY3Vyc29yKS5tYXRjaCgvXFxbSW1hZ2UgI1xcZCtcXF0kLylcbiAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmVmcy5hdHRhY2htZW50cy5kZWxldGUobWF0Y2hbMF0pXG4gICAgICAgICAgICAgICAgc2V0SW5wdXQoZS52YWx1ZS5zbGljZSgwLCBlLmN1cnNvciAtIG1hdGNoWzBdLmxlbmd0aCkgKyBlLnZhbHVlLnNsaWNlKGUuY3Vyc29yKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd0YWInICYmICFlLmN0cmwgJiYgIWUubWV0YSkge1xuICAgICAgICAgICAgICBjb25zdCBjdHggPSBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlOiBlLnZhbHVlLCByZXNvbHZlOiBjb21wbGV0aW9uU291cmNlIH0pXG4gICAgICAgICAgICAgIGlmICghY3R4KSByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgICAgaWYgKCFjb21wbGV0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICBzZXRDb21wbGV0aW5nKHRydWUpXG4gICAgICAgICAgICAgICAgc2V0Q29tcEluZGV4KDApXG4gICAgICAgICAgICAgICAgbGlzdEZpbGVzKGN3ZCkudGhlbigoZmlsZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChmaWxlcyAhPT0gZmlsZUxpc3QoKSkgc2V0RmlsZUxpc3QoZmlsZXMpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdHgubWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgYWNjZXB0Q29tcGxldGlvbihlLnZhbHVlLCBjdHgsIGN0eC5tYXRjaGVzW01hdGgubWluKGNvbXBJbmRleCgpLCBjdHgubWF0Y2hlcy5sZW5ndGggLSAxKV0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmN0cmwgfHwgZS5tZXRhIHx8IHNob3dDb21tYW5kcyB8fCBzaG93RmlsZXMpIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndXAnICYmIGUudmFsdWUgPT09ICcnICYmIHF1ZXVlZCgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgc2V0SW5wdXQocXVldWVkKCkuam9pbignXFxuJykpXG4gICAgICAgICAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJyb3dzaW5nID0gaGlzdElkeCgpID49IDBcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3VwJyAmJiAoYnJvd3NpbmcgfHwgZS52YWx1ZSA9PT0gJycpICYmIGhpc3RJZHgoKSA8IHNlbnQoKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSBoaXN0SWR4KCkgKyAxXG4gICAgICAgICAgICAgIHNldEhpc3RJZHgobilcbiAgICAgICAgICAgICAgc2V0SW5wdXQoc2VudCgpW3NlbnQoKS5sZW5ndGggLSAxIC0gbl0udGV4dClcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ2Rvd24nICYmIGJyb3dzaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSBoaXN0SWR4KCkgLSAxXG4gICAgICAgICAgICAgIHNldEhpc3RJZHgobilcbiAgICAgICAgICAgICAgc2V0SW5wdXQobiA8IDAgPyAnJyA6IHNlbnQoKVtzZW50KCkubGVuZ3RoIC0gMSAtIG5dLnRleHQpXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9fVxuICAgICAgICAgIHN1Ym1pdE9uRW50ZXJcbiAgICAgICAgICBjbGVhck9uU3VibWl0XG4gICAgICAgICAgZm9jdXNlZD17Zm0uaXMoJ2lucHV0JykgJiYgIWFueVBhbmVsKCl9XG4gICAgICAgICAgbWF4SGVpZ2h0PXs4fVxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZW50ZXIgdG8gc2VuZCBcdTAwQjcgLyBjb21tYW5kcyBcdTAwQjcgQCBmaWxlcyBcdTAwQjcgdGFiIHRvIHNjcm9sbFwiXG4gICAgICAgICAgY3Vyc29yPXt7IGJsaW5rOiB0cnVlLCBiZzogYWNjZW50KCksIGNvbG9yOiAnYmxhY2snIH19XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cblxuICAgICAge3Nob3dDb21tYW5kcyAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge21hdGNoZWRDb21tYW5kcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgY29tbWFuZHM8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e21hdGNoZWRDb21tYW5kc31cbiAgICAgICAgICAgICAgc2VsZWN0ZWQ9e2NtZEluZGV4KCl9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRDbWRJbmRleH1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9eyhjKSA9PiBydW5Db21tYW5kKGMpfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtzaG93Q29tbWFuZHN9XG4gICAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KGMsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IE1VVEVEIH19PntgLyR7Yy5uYW1lfWAucGFkRW5kKDEyKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gJyNjYmQ1ZTEnIDogRkFJTlQgfX0+e2MuZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dGaWxlcyAmJiBtYXRjaGVkRmlsZXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXttYXRjaGVkRmlsZXN9XG4gICAgICAgICAgICBzZWxlY3RlZD17ZmlsZUluZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0RmlsZUluZGV4fVxuICAgICAgICAgICAgb25TdWJtaXQ9e3BpY2tGaWxlfVxuICAgICAgICAgICAgb25DYW5jZWw9eygpID0+IHNldEZpbGVzRGlzbWlzc2VkKHRydWUpfVxuICAgICAgICAgICAgZm9jdXNlZD17c2hvd0ZpbGVzfVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhmLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGR19TT0ZUIH19PntmfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dDb21wbGV0aW9uICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e2NvbXBDdHgubWF0Y2hlc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtjb21wSW5kZXgoKX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRDb21wSW5kZXh9XG4gICAgICAgICAgICBvblN1Ym1pdD17KGNhbmRpZGF0ZSkgPT4gYWNjZXB0Q29tcGxldGlvbihpbnB1dCgpLCBjb21wQ3R4LCBjYW5kaWRhdGUpfVxuICAgICAgICAgICAgb25DYW5jZWw9e2Rpc21pc3NDb21wbGV0aW9ufVxuICAgICAgICAgICAgZm9jdXNlZD17c2hvd0NvbXBsZXRpb259XG4gICAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgICAgc2Nyb2xsb2ZmPXsyfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KGNhbmRpZGF0ZSwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkdfU09GVCB9fT57Y2FuZGlkYXRlfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dNb2RlbFBhbmVsKCkgJiYgKFxuICAgICAgICA8TW9kZWxQYW5lbFxuICAgICAgICAgIG1vZGVscz17bW9kZWxzfVxuICAgICAgICAgIGN1cnJlbnQ9e21vZGVsKCkubmFtZX1cbiAgICAgICAgICBkZWZhdWx0TmFtZT17ZGVmYXVsdE1vZGVsKCkubmFtZX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93TW9kZWxQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KG0pID0+IHtcbiAgICAgICAgICAgIGlmIChtLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHJldHVybiBmbGFzaChgc2V0ICR7bS5rZXlIaW50fSBpbiB5b3VyIGVudmlyb25tZW50IHRvIHVzZSAke20ubmFtZX1gKVxuICAgICAgICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ21vZGVsX3N3aXRjaCcsIHsgZnJvbTogbW9kZWwoKS5uYW1lLCB0bzogbS5uYW1lIH0pKVxuICAgICAgICAgICAgc2V0TW9kZWwobSlcbiAgICAgICAgICAgIHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgZmxhc2goYG1vZGVsIHNldCB0byAke20ubmFtZX1gKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25QaWNrRGVmYXVsdD17KG0pID0+IHtcbiAgICAgICAgICAgIGlmIChtLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHJldHVybiBmbGFzaChgc2V0ICR7bS5rZXlIaW50fSBpbiB5b3VyIGVudmlyb25tZW50IHRvIHVzZSAke20ubmFtZX1gKVxuICAgICAgICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ21vZGVsX3N3aXRjaCcsIHsgZnJvbTogbW9kZWwoKS5uYW1lLCB0bzogbS5uYW1lIH0pKVxuICAgICAgICAgICAgc2V0TW9kZWwobSlcbiAgICAgICAgICAgIHNldERlZmF1bHRNb2RlbChtKVxuICAgICAgICAgICAgd3JpdGVDb25maWcoeyBkZWZhdWx0TW9kZWw6IG0ubmFtZSB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgICAgICAgIHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgZmxhc2goYG1vZGVsIHNldCB0byAke20ubmFtZX0gXHUwMEI3IHNhdmVkIGFzIGRlZmF1bHRgKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd01vZGVsUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dFZmZvcnRQYW5lbCgpICYmIChcbiAgICAgICAgPEVmZm9ydFBhbmVsXG4gICAgICAgICAgbGV2ZWxzPXtFRkZPUlRfTEVWRUxTfVxuICAgICAgICAgIGN1cnJlbnQ9e2VmZm9ydCgpID8/IG51bGx9XG4gICAgICAgICAgZGVmYXVsdExldmVsPXtkZWZhdWx0RWZmb3J0KCkgPz8gbnVsbH1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93RWZmb3J0UGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhsKSA9PiB7XG4gICAgICAgICAgICBzZXRTZXNzaW9uRWZmb3J0KGwua2V5KVxuICAgICAgICAgICAgc2V0U2hvd0VmZm9ydFBhbmVsKGZhbHNlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25QaWNrRGVmYXVsdD17KGwpID0+IHtcbiAgICAgICAgICAgIHNldFNlc3Npb25FZmZvcnQobC5rZXksIHsgYXNEZWZhdWx0OiB0cnVlIH0pXG4gICAgICAgICAgICBzZXRTaG93RWZmb3J0UGFuZWwoZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RWZmb3J0UGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dIaXN0b3J5UGFuZWwoKSAmJiAoXG4gICAgICAgIDxIaXN0b3J5UGFuZWxcbiAgICAgICAgICBwcm9tcHRzPXtoaXN0UHJvbXB0cygpfVxuICAgICAgICAgIHNjb3Blcz17SElTVE9SWV9TQ09QRVN9XG4gICAgICAgICAgc2NvcGVJbmRleD17aGlzdFNjb3BlKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd0hpc3RvcnlQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KHRleHQpID0+IHsgc2V0SW5wdXQodGV4dCk7IHNldFNob3dIaXN0b3J5UGFuZWwoZmFsc2UpIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0hpc3RvcnlQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Jlc3VtZVBhbmVsKCkgJiYgKFxuICAgICAgICA8UmVzdW1lUGFuZWxcbiAgICAgICAgICBzZXNzaW9ucz17cmVzdW1lU2Vzc2lvbnMoKX1cbiAgICAgICAgICBzY29wZXM9e1JFU1VNRV9TQ09QRVN9XG4gICAgICAgICAgc2NvcGVJbmRleD17cmVzdW1lU2NvcGUoKX1cbiAgICAgICAgICBsb2FkaW5nPXtyZXN1bWVMb2FkaW5nKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1Jlc3VtZVBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXtyZXN1bWVTZXNzaW9ufVxuICAgICAgICAgIG9uRGVsZXRlPXtkZWxldGVTZXNzaW9uTWV0YX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UmVzdW1lUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge2luZm9QYW5lbCgpICYmIChcbiAgICAgICAgPEluZm9MaXN0UGFuZWxcbiAgICAgICAgICB0aXRsZT17aW5mb1BhbmVsKCkudGl0bGV9XG4gICAgICAgICAgcm93cz17aW5mb1BhbmVsKCkucm93c31cbiAgICAgICAgICBmb2N1c2VkPXtpbmZvUGFuZWwoKSAhPT0gbnVsbH1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJbmZvUGFuZWwobnVsbCl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Byb2plY3RQYW5lbCgpICYmIChcbiAgICAgICAgPFByb2plY3RQYW5lbFxuICAgICAgICAgIHByb2plY3RzPXtwcm9qZWN0cygpfVxuICAgICAgICAgIGxvYWRpbmc9e3Byb2plY3RzTG9hZGluZygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dQcm9qZWN0UGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhwKSA9PiByZXN1bWVTZXNzaW9uKHAubGF0ZXN0KX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UHJvamVjdFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2hlbGxzUGFuZWwoKSAmJiAoXG4gICAgICAgIDxTaGVsbHNQYW5lbFxuICAgICAgICAgIHZlcnNpb249e3NoZWxsc1ZlcnNpb24oKX1cbiAgICAgICAgICBzaGVsbHM9e2Jvb3Quc2hlbGxzLmxpc3QoKX1cbiAgICAgICAgICByZWFkT3V0cHV0PXsoaWQpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBib290LnNoZWxscy5vdXRwdXQoaWQsIHsgdGFpbDogMjAwMCB9KVxuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93U2hlbGxzUGFuZWwoKX1cbiAgICAgICAgICBvbktpbGw9e2tpbGxTaGVsbH1cbiAgICAgICAgICBvbkRpc21pc3M9eyhzKSA9PiBib290LnNoZWxscy5kaXNtaXNzKHMuaWQpfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dTaGVsbHNQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0Nvbm5lY3RQYW5lbCgpICYmIChcbiAgICAgICAgPENvbm5lY3RQYW5lbFxuICAgICAgICAgIHByb3ZpZGVycz17YXV0aFByb3ZpZGVycygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dDb25uZWN0UGFuZWwoKX1cbiAgICAgICAgICBvbkNvbm5lY3Q9e2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkRpc2Nvbm5lY3Q9e2Rpc2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Q29ubmVjdFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93V2FrZXVwc1BhbmVsKCkgJiYgKFxuICAgICAgICA8V2FrZXVwc1BhbmVsXG4gICAgICAgICAgd2FrZXVwcz17KHNoZWxsc1ZlcnNpb24oKSwgYm9vdC53YWtldXBzLmxpc3QoKSl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1dha2V1cHNQYW5lbCgpfVxuICAgICAgICAgIG9uQ2FuY2VsPXsodykgPT4ge1xuICAgICAgICAgICAgYm9vdC53YWtldXBzLmNhbmNlbCh3LmlkKVxuICAgICAgICAgICAgZmxhc2goYGNhbmNlbGxlZCB3YWtlLXVwICR7dy5pZH1gKVxuICAgICAgICAgICAgbm90ZVN5c3RlbShcbiAgICAgICAgICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSB0aGUgdXNlciBjYW5jZWxsZWQgc2NoZWR1bGVkIHdha2UtdXAgJHt3LmlkfSAobm90ZSB3YXM6ICR7dy5ub3RlLnJlcGxhY2UoL1xcbi9nLCAnICcpfSkuIFRoaXMgd2FzIGRlbGliZXJhdGU7IGRvIG5vdCByZXNjaGVkdWxlIGl0IHVubGVzcyBhc2tlZC5gLFxuICAgICAgICAgICAgICB7IHdha2U6IGZhbHNlIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93V2FrZXVwc1BhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93TWNwUGFuZWwoKSAmJiAoXG4gICAgICAgIDxNY3BQYW5lbFxuICAgICAgICAgIHNlcnZlcnM9e21jcFNlcnZlcnMoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93TWNwUGFuZWwoKX1cbiAgICAgICAgICBvblRvZ2dsZT17KG5hbWUpID0+IG1jcC50b2dnbGUobmFtZSl9XG4gICAgICAgICAgb25SZWNvbm5lY3Q9eyhuYW1lKSA9PiBtY3AucmVjb25uZWN0KG5hbWUpfVxuICAgICAgICAgIG9uUmVtb3ZlPXsobmFtZSkgPT4gbWNwLnJlbW92ZShuYW1lKX1cbiAgICAgICAgICBvbkFkZD17KG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgICAgICAgICBtY3AuYWRkKG5hbWUsIGNvbW1hbmQsIHNjb3BlKVxuICAgICAgICAgICAgZmxhc2goYGFkZGVkICR7bmFtZX0gKCR7c2NvcGV9KWApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkludmFsaWQ9e2ZsYXNofVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNY3BQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7cmV3aW5kU3RlcCgpID09PSAncGljaycgJiYgKFxuICAgICAgICA8UmV3aW5kUGlja1BhbmVsXG4gICAgICAgICAgZW50cmllcz17Wy4uLnJld2luZEVudHJpZXMoKV0ucmV2ZXJzZSgpfVxuICAgICAgICAgIHN0YXRzPXsoaW5kZXgpID0+IHJld2luZFN0YXRzKGRlcml2ZWQoKSwgaW5kZXgpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Jld2luZFN0ZXAoKSA9PT0gJ3BpY2snfVxuICAgICAgICAgIG9uUGljaz17KGVudHJ5KSA9PiB7IHNldFJld2luZFRhcmdldChlbnRyeSk7IHNldFJld2luZFN0ZXAoJ2FjdGlvbicpIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0UmV3aW5kU3RlcChudWxsKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtyZXdpbmRTdGVwKCkgPT09ICdhY3Rpb24nICYmIHJld2luZFRhcmdldCgpICYmIChcbiAgICAgICAgPFJld2luZEFjdGlvblBhbmVsXG4gICAgICAgICAgdGFyZ2V0PXtyZXdpbmRUYXJnZXQoKX1cbiAgICAgICAgICBvcHRpb25zPXtyZXdpbmRPcHRpb25zfVxuICAgICAgICAgIGZvY3VzZWQ9e3Jld2luZFN0ZXAoKSA9PT0gJ2FjdGlvbid9XG4gICAgICAgICAgb25TdWJtaXQ9e3BlcmZvcm1SZXdpbmR9XG4gICAgICAgICAgb25CYWNrPXsoKSA9PiBzZXRSZXdpbmRTdGVwKCdwaWNrJyl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBwYWRkaW5nWDogMiwgZ2FwOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHtidXN5KClcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDxTaGltbWVyIGNvbG9yPXthY2NlbnQoKX0gaGlnaGxpZ2h0PVwid2hpdGVcIiBkdXJhdGlvbj17MTUwMH0gcmV2ZXJzZT57Y29tcGFjdGluZygpID8gJ0NvbXBhY3RpbmcnIDogdGhpbmtpbmdOb3coKSA/ICdUaGlua2luZycgOiAnUmVzcG9uZGluZyd9PC9TaGltbWVyPlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgKCR7ZWxhcHNlZH1zKSBcdTAwQjcgZXNjIHRvIGludGVycnVwdGB9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKVxuICAgICAgICAgIDogPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5ULCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57Ym9vdC5kaXNwbGF5Q3dkfTwvdGV4dD59XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAge3J1bm5pbmdTaGVsbHMgPiAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YFx1MjY5OSAke3J1bm5pbmdTaGVsbHN9YH08L3RleHQ+fVxuICAgICAgICB7cGVuZGluZ1dha2V1cHMgPiAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YFx1MjNGMCAke3BlbmRpbmdXYWtldXBzfWB9PC90ZXh0Pn1cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19Pnttb2RlbCgpLm5hbWV9PC90ZXh0PlxuICAgICAgICB7ZWZmb3J0QXBwbGllcygpICYmIGVmZm9ydCgpICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YFx1MDBCNyAke2VmZm9ydCgpfWB9PC90ZXh0Pn1cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Plx1MjE5MTwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgJHt1c2FnZS5wcm9tcHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gaW5gfTwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Plx1MjE5MzwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgJHt1c2FnZS5jb21wbGV0aW9uVG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IG91dGB9PC90ZXh0PlxuICAgICAgICB7dXNhZ2UudGhvdWdodFRva2VucyA+IDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgXHUyNzI2ICR7dXNhZ2UudGhvdWdodFRva2Vucy50b0xvY2FsZVN0cmluZygpfSB0aGlua2B9PC90ZXh0Pn1cbiAgICAgICAge21vZGVsKCkuY29udGV4dCA+IDAgJiYgZGVyaXZlZCgpLmxhc3RQcm9tcHRUb2tlbnMgPiAwICYmIGRlcml2ZWQoKS5sYXN0UHJvbXB0TW9kZWwgPT09IG1vZGVsKCkubmFtZSAmJiAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBjdCA9IE1hdGgubWluKDEwMCwgTWF0aC5yb3VuZCgoZGVyaXZlZCgpLmxhc3RQcm9tcHRUb2tlbnMgLyBtb2RlbCgpLmNvbnRleHQpICogMTAwKSlcbiAgICAgICAgICByZXR1cm4gPHRleHQgc3R5bGU9e3sgY29sb3I6IHBjdCA+PSA4MCA/IFJFRCA6IE1VVEVEIH19PntgY3R4ICR7cGN0fSVgfTwvdGV4dD5cbiAgICAgICAgfSkoKX1cbiAgICAgIDwvYm94PlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgYXBwZW5kRmlsZSwgcmVhZEZpbGUsIHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBwcm9qZWN0RGlyLCBwcm9qZWN0SGlzdG9yeUZpbGUsIGVuc3VyZURpciB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmNvbnN0IE1BWF9QUk9NUFRTX1BFUl9TQ09QRSA9IDEwMDBcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGVuZFByb21wdChyb290LCB0ZXh0KSB7XG4gIGVuc3VyZURpcihwcm9qZWN0RGlyKHJvb3QpKVxuICBhd2FpdCBhcHBlbmRGaWxlKHByb2plY3RIaXN0b3J5RmlsZShyb290KSwgSlNPTi5zdHJpbmdpZnkoeyB0ZXh0LCBhdDogRGF0ZS5ub3coKSB9KSArICdcXG4nKVxufVxuXG5mdW5jdGlvbiBwYXJzZVByb21wdExpbmVzKHRleHQpIHtcbiAgcmV0dXJuIHRleHRcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGxpbmUudHJpbSgpID8gSlNPTi5wYXJzZShsaW5lKSA6IG51bGxcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUHJvbXB0cyhmaWxlLCBzY29wZSkge1xuICB0cnkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBwYXJzZVByb21wdExpbmVzKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICAgIHJldHVybiBlbnRyaWVzXG4gICAgICAuZmlsdGVyKChlKSA9PiB0eXBlb2YgZS50ZXh0ID09PSAnc3RyaW5nJyAmJiBlLnRleHQudHJpbSgpKVxuICAgICAgLnNsaWNlKC1NQVhfUFJPTVBUU19QRVJfU0NPUEUpXG4gICAgICAubWFwKChlKSA9PiAoeyB0ZXh0OiBlLnRleHQsIGF0OiBlLmF0IHx8IDAsIHNjb3BlIH0pKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFByb2plY3RQcm9tcHRzKHJvb3QpIHtcbiAgcmV0dXJuIHJlYWRQcm9tcHRzKHByb2plY3RIaXN0b3J5RmlsZShyb290KSwgJ3Byb2plY3QnKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEdsb2JhbFByb21wdHMoKSB7XG4gIGNvbnN0IHByb2plY3RzRGlyID0gam9pbihwaWNvSG9tZSgpLCAncHJvamVjdHMnKVxuICBsZXQgcHJvamVjdHMgPSBbXVxuICB0cnkge1xuICAgIHByb2plY3RzID0gYXdhaXQgcmVhZGRpcihwcm9qZWN0c0RpcilcbiAgfSBjYXRjaCB7fVxuICBjb25zdCBuZXN0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcm9qZWN0cy5tYXAoKHApID0+IHJlYWRQcm9tcHRzKGpvaW4ocHJvamVjdHNEaXIsIHAsICdoaXN0b3J5Lmpzb25sJyksICdldmVyeXdoZXJlJykpLFxuICApXG4gIHJldHVybiBuZXN0ZWQuZmxhdCgpLnNvcnQoKGEsIGIpID0+IGIuYXQgLSBhLmF0KS5zbGljZSgwLCBNQVhfUFJPTVBUU19QRVJfU0NPUEUpXG59XG4iLCAiaW1wb3J0IHsgcmVhZGRpciwgc3RhdCB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJ1xuaW1wb3J0IHsgcGljb0hvbWUgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsVG9vbHNEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICd0b29scycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0VG9vbHNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihyb290LCAnLnBpY28nLCAndG9vbHMnKVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZSh0b29sLCBmaWxlKSB7XG4gIGlmICghdG9vbCB8fCB0eXBlb2YgdG9vbCAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcignZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgdG9vbCBvYmplY3QnKVxuICBpZiAodHlwZW9mIHRvb2wubmFtZSAhPT0gJ3N0cmluZycgfHwgIXRvb2wubmFtZSkgdGhyb3cgbmV3IEVycm9yKCd0b29sLm5hbWUgbXVzdCBiZSBhIHN0cmluZycpXG4gIGlmICh0eXBlb2YgdG9vbC5kZXNjcmlwdGlvbiAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcigndG9vbC5kZXNjcmlwdGlvbiBtdXN0IGJlIGEgc3RyaW5nJylcbiAgaWYgKHR5cGVvZiB0b29sLmV4ZWN1dGUgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFcnJvcigndG9vbC5leGVjdXRlIG11c3QgYmUgYSBmdW5jdGlvbicpXG4gIGlmICghdG9vbC5zY2hlbWEgfHwgdHlwZW9mIHRvb2wuc2NoZW1hICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCd0b29sLnNjaGVtYSBtdXN0IGJlIGFuIG9iamVjdCcpXG4gIHJldHVybiB7IC4uLnRvb2wsIF9maWxlOiBmaWxlIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZFRvb2woZmlsZSwgY29udGV4dCkge1xuICBjb25zdCB7IG10aW1lTXMgfSA9IGF3YWl0IHN0YXQoZmlsZSlcbiAgY29uc3QgbW9kdWxlID0gYXdhaXQgaW1wb3J0KGAke3BhdGhUb0ZpbGVVUkwoZmlsZSkuaHJlZn0/dj0ke210aW1lTXN9YClcbiAgY29uc3QgZXhwb3J0ZWQgPSBtb2R1bGUuZGVmYXVsdFxuICBjb25zdCB0b29sID0gdHlwZW9mIGV4cG9ydGVkID09PSAnZnVuY3Rpb24nID8gYXdhaXQgZXhwb3J0ZWQoY29udGV4dCkgOiBleHBvcnRlZFxuICByZXR1cm4gdmFsaWRhdGUodG9vbCwgZmlsZSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIGNvbnRleHQsIHNvdXJjZSkge1xuICBsZXQgbmFtZXMgPSBbXVxuICB0cnkge1xuICAgIG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IHRvb2xzOiBbXSwgZXJyb3JzOiBbXSB9XG4gIH1cbiAgY29uc3QgdG9vbHMgPSBbXVxuICBjb25zdCBlcnJvcnMgPSBbXVxuICBmb3IgKGNvbnN0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIW5hbWUuZW5kc1dpdGgoJy5qcycpICYmICFuYW1lLmVuZHNXaXRoKCcubWpzJykpIGNvbnRpbnVlXG4gICAgY29uc3QgZmlsZSA9IGpvaW4oZGlyLCBuYW1lKVxuICAgIHRyeSB7XG4gICAgICB0b29scy5wdXNoKHsgLi4uKGF3YWl0IGxvYWRUb29sKGZpbGUsIGNvbnRleHQpKSwgc291cmNlIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnJvcnMucHVzaCh7IGZpbGUsIGVycm9yOiBTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCAyMDApIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHRvb2xzLCBlcnJvcnMgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2NhblVzZXJUb29scyh7IGN3ZCwgcm9vdCB9KSB7XG4gIGNvbnN0IGNvbnRleHQgPSB7IGN3ZCwgcm9vdCB9XG4gIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsVG9vbHNEaXIoKSwgY29udGV4dCwgJ2dsb2JhbCcpXG4gIGNvbnN0IHByb2plY3QgPSBhd2FpdCBzY2FuRGlyKHByb2plY3RUb29sc0Rpcihyb290KSwgY29udGV4dCwgJ3Byb2plY3QnKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCB0b29sIG9mIFsuLi5nbG9iYWwudG9vbHMsIC4uLnByb2plY3QudG9vbHNdKSBieU5hbWUuc2V0KHRvb2wubmFtZSwgdG9vbClcbiAgcmV0dXJuIHsgdG9vbHM6IFsuLi5ieU5hbWUudmFsdWVzKCldLCBlcnJvcnM6IFsuLi5nbG9iYWwuZXJyb3JzLCAuLi5wcm9qZWN0LmVycm9yc10gfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuXG5hc3luYyBmdW5jdGlvbiByZWFkQ3VycmVudChwYXRoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlYWRGaWxlKHBhdGgsICd1dGYtOCcpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldmVydEVkaXRzKGVkaXRzKSB7XG4gIGNvbnN0IHJldmVydGVkID0gW11cbiAgY29uc3Qgc2tpcHBlZCA9IFtdXG4gIGZvciAoY29uc3QgZWRpdCBvZiBbLi4uZWRpdHNdLnJldmVyc2UoKSkge1xuICAgIGNvbnN0IHsgcGF0aCwgYmVmb3JlLCBhZnRlciB9ID0gZWRpdC5yZXZlcnRcbiAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgcmVhZEN1cnJlbnQocGF0aClcbiAgICBpZiAoY3VycmVudCA9PT0gYWZ0ZXIpIHtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShwYXRoLCBiZWZvcmUsICd1dGYtOCcpXG4gICAgICByZXZlcnRlZC5wdXNoKGVkaXQuY2FsbElkKVxuICAgIH0gZWxzZSB7XG4gICAgICBza2lwcGVkLnB1c2goeyBwYXRoLCBjYWxsSWQ6IGVkaXQuY2FsbElkLCByZWFzb246ICdmaWxlIGNoYW5nZWQgc2luY2UgZWRpdCcgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcmV2ZXJ0ZWQsIHNraXBwZWQgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhcHBseUVkaXRzKGVkaXRzKSB7XG4gIGNvbnN0IHJlYXBwbGllZCA9IFtdXG4gIGNvbnN0IHNraXBwZWQgPSBbXVxuICBmb3IgKGNvbnN0IGVkaXQgb2YgZWRpdHMpIHtcbiAgICBjb25zdCB7IHBhdGgsIGJlZm9yZSwgYWZ0ZXIgfSA9IGVkaXQucmV2ZXJ0XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IHJlYWRDdXJyZW50KHBhdGgpXG4gICAgaWYgKGN1cnJlbnQgPT09IGJlZm9yZSkge1xuICAgICAgYXdhaXQgd3JpdGVGaWxlKHBhdGgsIGFmdGVyLCAndXRmLTgnKVxuICAgICAgcmVhcHBsaWVkLnB1c2goZWRpdC5jYWxsSWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNraXBwZWQucHVzaCh7IHBhdGgsIGNhbGxJZDogZWRpdC5jYWxsSWQsIHJlYXNvbjogJ2ZpbGUgY2hhbmdlZCBzaW5jZSByZXZlcnQnIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHJlYXBwbGllZCwgc2tpcHBlZCB9XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIHRyYW5zY3JpcHRUb01hcmtkb3duKHRyYW5zY3JpcHQsIHsgdGl0bGUgPSAncGljbyBzZXNzaW9uJyB9ID0ge30pIHtcbiAgY29uc3QgcGFydHMgPSBbYCMgJHt0aXRsZX1gLCAnJ11cbiAgZm9yIChjb25zdCBpdGVtIG9mIHRyYW5zY3JpcHQpIHtcbiAgICBpZiAoaXRlbS5raW5kID09PSAndXNlcicpIHtcbiAgICAgIHBhcnRzLnB1c2goJyMjIFlvdScsICcnLCBpdGVtLnRleHQsICcnKVxuICAgIH0gZWxzZSBpZiAoaXRlbS5raW5kID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgcGFydHMucHVzaChpdGVtLmludGVycnVwdGVkID8gYCR7aXRlbS50ZXh0fVxcblxcbiooaW50ZXJydXB0ZWQpKmAgOiBpdGVtLnRleHQsICcnKVxuICAgIH0gZWxzZSBpZiAoaXRlbS5raW5kID09PSAndG9vbCcpIHtcbiAgICAgIGNvbnN0IGxhYmVsID0gaXRlbS5kaWZmID8gYCAoKyR7aXRlbS5kaWZmLmFkZGl0aW9uc30gLSR7aXRlbS5kaWZmLmRlbGV0aW9uc30pYCA6ICcnXG4gICAgICBwYXJ0cy5wdXNoKGA+ICR7aXRlbS5zdGF0dXMgPT09ICdyZXZlcnRlZCcgPyAnXHUyMUE5JyA6ICdcdTI3MTMnfSBcXGAke2l0ZW0ubmFtZX1cXGAgJHtpdGVtLnRpdGxlfSR7bGFiZWx9YCwgJycpXG4gICAgfSBlbHNlIGlmIChpdGVtLmtpbmQgPT09ICdzdW1tYXJ5Jykge1xuICAgICAgcGFydHMucHVzaChgPiBzdW1tYXJ5OiAke2l0ZW0udGV4dH1gLCAnJylcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJ1xcbicpXG59XG4iLCAiaW1wb3J0IHsgZnV6enlTY29yZSB9IGZyb20gJy4vZnV6enkuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlLCByZXNvbHZlIH0pIHtcbiAgaWYgKHZhbHVlLmluY2x1ZGVzKCdcXG4nKSkgcmV0dXJuIG51bGxcbiAgY29uc3QgbSA9IHZhbHVlLm1hdGNoKC9eXFwvKFxcUyspICguKikkLylcbiAgaWYgKCFtKSByZXR1cm4gbnVsbFxuICBjb25zdCBzb3VyY2UgPSByZXNvbHZlKG1bMV0udG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFzb3VyY2UgfHwgc291cmNlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcbiAgY29uc3QgdG9rZW5zID0gbVsyXS5zcGxpdCgnICcpXG4gIGNvbnN0IHBhcnRpYWwgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdXG4gIGNvbnN0IG1hdGNoZXMgPSBzb3VyY2VcbiAgICAubWFwKChzKSA9PiBbZnV6enlTY29yZShwYXJ0aWFsLCBzKSwgc10pXG4gICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gICAgLm1hcCgoWywgc10pID0+IHMpXG4gIHJldHVybiB7IHBhcnRpYWwsIG1hdGNoZXMsIHN0YXJ0OiB2YWx1ZS5sZW5ndGggLSBwYXJ0aWFsLmxlbmd0aCB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUNvbXBsZXRpb24odmFsdWUsIGN0eCwgY2FuZGlkYXRlKSB7XG4gIHJldHVybiB2YWx1ZS5zbGljZSgwLCBjdHguc3RhcnQpICsgY2FuZGlkYXRlICsgJyAnXG59XG4iLCAiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgZmcgZnJvbSAnZmFzdC1nbG9iJ1xuXG5jb25zdCBNQVhfRklMRVMgPSA1MDAwXG5jb25zdCBUVEwgPSA1MDAwXG5cbmxldCBjYWNoZWQgPSB7IGF0OiAwLCBjd2Q6IG51bGwsIGZpbGVzOiBbXSB9XG5cbmZ1bmN0aW9uIHJpcGdyZXBGaWxlcyhjd2QpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IFsnLS1maWxlcycsICctLWhpZGRlbicsICctLWdsb2InLCAnISoqLy5naXQvKionLCAnLS1zb3J0cj1tb2RpZmllZCddXG4gICAgZXhlY0ZpbGUoJ3JnJywgYXJncywgeyBjd2QsIG1heEJ1ZmZlcjogNTAgKiAxMDI0ICogMTAyNCB9LCAoZXJyLCBzdGRvdXQpID0+IHtcbiAgICAgIHJlc29sdmUoZXJyICYmICFzdGRvdXQgPyBudWxsIDogc3Rkb3V0LnNwbGl0KCdcXG4nKS5maWx0ZXIoQm9vbGVhbikpXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RGaWxlcyhjd2QpIHtcbiAgaWYgKGNhY2hlZC5jd2QgPT09IGN3ZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLmF0IDwgVFRMKSByZXR1cm4gY2FjaGVkLmZpbGVzXG4gIGxldCBmaWxlcyA9IGF3YWl0IHJpcGdyZXBGaWxlcyhjd2QpXG4gIGlmICghZmlsZXMpIHtcbiAgICBmaWxlcyA9IGF3YWl0IGZnKCcqKi8qJywge1xuICAgICAgY3dkLFxuICAgICAgb25seUZpbGVzOiB0cnVlLFxuICAgICAgZG90OiB0cnVlLFxuICAgICAgaWdub3JlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi8uZ2l0LyoqJ10sXG4gICAgfSkuY2F0Y2goKCkgPT4gW10pXG4gIH1cbiAgY2FjaGVkID0geyBhdDogRGF0ZS5ub3coKSwgY3dkLCBmaWxlczogZmlsZXMuc2xpY2UoMCwgTUFYX0ZJTEVTKSB9XG4gIHJldHVybiBjYWNoZWQuZmlsZXNcbn1cbiIsICJpbXBvcnQgeyBjb2RlVG9BTlNJIH0gZnJvbSAnQHNoaWtpanMvY2xpJ1xuaW1wb3J0IHsgY3JlYXRlU2lnbmFsIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuXG5jb25zdCBMQU5HUyA9IHtcbiAganM6ICdqcycsIG1qczogJ2pzJywgY2pzOiAnanMnLCBqc3g6ICdqc3gnLCB0czogJ3RzJywgdHN4OiAndHN4JyxcbiAganNvbjogJ2pzb24nLCBqc29ubDogJ2pzb24nLCBtZDogJ21kJywgcHk6ICdweXRob24nLCByYjogJ3J1YnknLCBnbzogJ2dvJyxcbiAgcnM6ICdydXN0JywgYzogJ2MnLCBoOiAnYycsIGNwcDogJ2NwcCcsIGphdmE6ICdqYXZhJywgY3NzOiAnY3NzJyxcbiAgaHRtbDogJ2h0bWwnLCB2dWU6ICd2dWUnLCBzaDogJ2Jhc2gnLCBiYXNoOiAnYmFzaCcsIHpzaDogJ2Jhc2gnLFxuICB5bWw6ICd5YW1sJywgeWFtbDogJ3lhbWwnLCB0b21sOiAndG9tbCcsIHNxbDogJ3NxbCcsIHN2ZWx0ZTogJ3N2ZWx0ZScsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYW5nRm9yUGF0aChwYXRoKSB7XG4gIGNvbnN0IGV4dCA9IFN0cmluZyhwYXRoKS5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKClcbiAgcmV0dXJuIExBTkdTW2V4dF0gfHwgJ3R4dCdcbn1cblxuY29uc3QgY2FjaGUgPSBuZXcgTWFwKClcbmNvbnN0IHBlbmRpbmcgPSBuZXcgU2V0KClcbmNvbnN0IGZhaWxlZCA9IG5ldyBTZXQoKVxuY29uc3QgW3ZlcnNpb24sIHNldFZlcnNpb25dID0gY3JlYXRlU2lnbmFsKDApXG5cbmV4cG9ydCBjb25zdCBoaWdobGlnaHRWZXJzaW9uID0gdmVyc2lvblxuXG5leHBvcnQgZnVuY3Rpb24gaGlnaGxpZ2h0KGNvZGUsIGxhbmcpIHtcbiAgY29uc3Qgc2FmZUxhbmcgPSBsYW5nICYmICFmYWlsZWQuaGFzKGxhbmcpID8gbGFuZyA6ICd0eHQnXG4gIHJldHVybiBjb2RlXG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGAke3NhZmVMYW5nfVxcbiR7bGluZX1gXG4gICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHJldHVybiBjYWNoZS5nZXQoa2V5KVxuICAgICAgd2FybShsaW5lLCBzYWZlTGFuZywga2V5KVxuICAgICAgcmV0dXJuIGxpbmVcbiAgICB9KVxuICAgIC5qb2luKCdcXG4nKVxufVxuXG5mdW5jdGlvbiB3YXJtKGxpbmUsIGxhbmcsIGtleSkge1xuICBpZiAocGVuZGluZy5oYXMoa2V5KSkgcmV0dXJuXG4gIHBlbmRpbmcuYWRkKGtleSlcbiAgY29kZVRvQU5TSShsaW5lLCBsYW5nLCAnbm9yZCcpXG4gICAgLnRoZW4oKGFuc2kpID0+IGNhY2hlLnNldChrZXksIGFuc2kucmVwbGFjZSgvXFxuJC8sICcnKSkpXG4gICAgLmNhdGNoKCgpID0+IHtcbiAgICAgIGZhaWxlZC5hZGQobGFuZylcbiAgICAgIGNhY2hlLnNldChrZXksIGxpbmUpXG4gICAgfSlcbiAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICBwZW5kaW5nLmRlbGV0ZShrZXkpXG4gICAgICBzZXRWZXJzaW9uKCh2KSA9PiB2ICsgMSlcbiAgICB9KVxufVxuIiwgImltcG9ydCB7IERpZmYsIE1hcmtkb3duLCBTcGlubmVyIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgYWNjZW50LCBGRywgRkdfU09GVCwgTVVURUQsIEZBSU5ULCBQQU5FTF9CRywgUkVEIH0gZnJvbSAnLi90aGVtZS5qcydcbmltcG9ydCB7IGhpZ2hsaWdodCwgbGFuZ0ZvclBhdGggfSBmcm9tICcuL2hpZ2hsaWdodC5qcydcblxuZXhwb3J0IHsgZGVmYXVsdFRpdGxlIGFzIHVpVGl0bGUgfSBmcm9tICcuLi9jb3JlL3Rvb2xzL3JlY29yZGVyLmpzJ1xuXG5mdW5jdGlvbiBUb29sQ2FyZCh7IG5hbWUsIHRpdGxlLCBzdGF0dXMsIGRpZmYsIHJldmVydCwgZnVsbE91dHB1dCwgZXJyb3IsIGJhY2tncm91bmQsIHZlcmJvc2UgfSkge1xuICBjb25zdCBydW5uaW5nID0gc3RhdHVzID09PSAncnVubmluZydcbiAgY29uc3QgaW50ZXJydXB0ZWQgPSBzdGF0dXMgPT09ICdpbnRlcnJ1cHRlZCdcbiAgY29uc3QgcmV2ZXJ0ZWQgPSBzdGF0dXMgPT09ICdyZXZlcnRlZCdcbiAgY29uc3QgZmFpbGVkID0gc3RhdHVzID09PSAnZXJyb3InXG4gIGNvbnN0IG91dExpbmVzID0gZnVsbE91dHB1dCA/IGZ1bGxPdXRwdXQuc3BsaXQoJ1xcbicpIDogbnVsbFxuXG4gIGNvbnN0IGluZm8gPSBydW5uaW5nID8gJ3J1bm5pbmcnXG4gICAgOiBpbnRlcnJ1cHRlZCA/ICdpbnRlcnJ1cHRlZCdcbiAgICA6IHJldmVydGVkID8gJ3JldmVydGVkJ1xuICAgIDogZmFpbGVkID8gJ2ZhaWxlZCdcbiAgICA6IGJhY2tncm91bmQgPyAnYmFja2dyb3VuZCBcdTAwQjcgL3NoZWxscydcbiAgICA6IGRpZmYgPyBgKyR7ZGlmZi5hZGRpdGlvbnN9IC0ke2RpZmYuZGVsZXRpb25zfWBcbiAgICA6IG91dExpbmVzID8gYCR7b3V0TGluZXMubGVuZ3RofSAke291dExpbmVzLmxlbmd0aCA9PT0gMSA/ICdsaW5lJyA6ICdsaW5lcyd9IFx1MDBCNyBjdHJsK29gXG4gICAgOiAnZG9uZSdcblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgIHtydW5uaW5nXG4gICAgICAgICAgPyA8U3Bpbm5lciBjb2xvcj17YWNjZW50KCl9IC8+XG4gICAgICAgICAgOiA8dGV4dCBzdHlsZT17eyBjb2xvcjogaW50ZXJydXB0ZWQgfHwgZmFpbGVkID8gUkVEIDogcmV2ZXJ0ZWQgPyBNVVRFRCA6IGFjY2VudCgpIH19PntpbnRlcnJ1cHRlZCA/ICdcdTI3MTcnIDogZmFpbGVkID8gJ1x1MjcxNycgOiByZXZlcnRlZCA/ICdcdTIxQTknIDogJ1x1MjcxMyd9PC90ZXh0Pn1cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgJHtuYW1lLnBhZEVuZCg1KX0gYH08L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IEZHIH19Pnt0aXRsZSB8fCBuYW1lfTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgJHtpbmZvfWB9PC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICB7ZmFpbGVkICYmIGVycm9yICYmIChcbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVELCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57YCAgJHtlcnJvcn1gfTwvdGV4dD5cbiAgICAgICl9XG4gICAgICB7cmV2ZXJ0ICYmICFydW5uaW5nICYmICFyZXZlcnRlZCAmJiAhKGRpZmYgJiYgZGlmZi5hZGRpdGlvbnMgPT09IDAgJiYgZGlmZi5kZWxldGlvbnMgPT09IDApICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiBNYXRoLm1pbigoZGlmZj8uaHVua3MgfHwgW10pLnJlZHVjZSgoYSwgaCkgPT4gYSArIGgubGluZXMubGVuZ3RoLCAyKSArIDEsIDEyKSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDxEaWZmXG4gICAgICAgICAgICBiZWZvcmU9e3JldmVydC5iZWZvcmV9XG4gICAgICAgICAgICBhZnRlcj17cmV2ZXJ0LmFmdGVyfVxuICAgICAgICAgICAgbGFuZ3VhZ2U9e2xhbmdGb3JQYXRoKHJldmVydC5wYXRoKX1cbiAgICAgICAgICAgIGhpZ2hsaWdodD17aGlnaGxpZ2h0fVxuICAgICAgICAgICAgZm9jdXNlZD17ZmFsc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXI9e2ZhbHNlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cbiAgICAgIHtvdXRMaW5lcyAmJiB2ZXJib3NlICYmICFydW5uaW5nICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCQgJHt0aXRsZX1gfTwvdGV4dD5cbiAgICAgICAgICB7b3V0TGluZXMuc2xpY2UoMCwgMjAwKS5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAge291dExpbmVzLmxlbmd0aCA+IDIwMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2BcdTIwMjYgJHtvdXRMaW5lcy5sZW5ndGggLSAyMDB9IG1vcmUgbGluZXNgfTwvdGV4dD59XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQmFubmVyKHsgdmVyc2lvbiwgY3dkLCBtb2RlbE5hbWUgfSkge1xuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+eycoXFxcXF8vKSd9PC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+eycoXHUyMDIyXHUxRDE3XHUyMDIyKSd9PC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGJvbGQ6IHRydWUsIGNvbG9yOiBhY2NlbnQoKSB9fT57JyAgcGljbyd9PC90ZXh0PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCB2JHt2ZXJzaW9ufSBcdTAwQjcgJHttb2RlbE5hbWV9YH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2AgICR7Y3dkfWB9PC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1lc3NhZ2UoeyBpdGVtLCB2ZXJib3NlIH0pIHtcbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3Rvb2wnKSB7XG4gICAgcmV0dXJuIDxUb29sQ2FyZCB7Li4uaXRlbX0gdmVyYm9zZT17dmVyYm9zZX0gLz5cbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdzdW1tYXJ5Jykge1xuICAgIGNvbnN0IGxpbmVzID0gaXRlbS50ZXh0LnNwbGl0KCdcXG4nKVxuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57aXRlbS5zb3VyY2UgPT09ICdjb21wYWN0JyA/ICdcdTI3MjYgc3VtbWFyeSBcdTAwQjcgY29udmVyc2F0aW9uIGNvbXBhY3RlZCBhYm92ZSB0aGlzIHBvaW50JyA6ICdcdTI3MjYgc3VtbWFyeSBcdTAwQjcgcmV3b3VuZCBjb252ZXJzYXRpb24nfTwvdGV4dD5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgJHtsaW5lcy5sZW5ndGh9ICR7bGluZXMubGVuZ3RoID09PSAxID8gJ2xpbmUnIDogJ2xpbmVzJ30gXHUwMEI3IGN0cmwrb2B9PC90ZXh0PlxuICAgICAgICA8L2JveD5cbiAgICAgICAge3ZlcmJvc2UgJiYgKFxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICAgIHtsaW5lcy5zbGljZSgwLCA1MDApLm1hcCgobGluZSwgaSkgPT4gKFxuICAgICAgICAgICAgICA8dGV4dCBrZXk9e2l9IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZUIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtsaW5lcy5sZW5ndGggPiA1MDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgXHUyMDI2ICR7bGluZXMubGVuZ3RoIC0gNTAwfSBtb3JlIGxpbmVzYH08L3RleHQ+fVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3Rob3VnaHRzJykge1xuICAgIGNvbnN0IGxpbmVzID0gaXRlbS50ZXh0LnNwbGl0KCdcXG4nKVxuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57J1x1MjcyNiB0aG91Z2h0cyd9PC90ZXh0PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake2xpbmVzLmxlbmd0aH0gJHtsaW5lcy5sZW5ndGggPT09IDEgPyAnbGluZScgOiAnbGluZXMnfSBcdTAwQjcgY3RybCtvYH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dmVyYm9zZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgICAge2xpbmVzLnNsaWNlKDAsIDMwMCkubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQsIGl0YWxpYzogdHJ1ZSB9fT57bGluZSB8fCAnICd9PC90ZXh0PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7bGluZXMubGVuZ3RoID4gMzAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YFx1MjAyNiAke2xpbmVzLmxlbmd0aCAtIDMwMH0gbW9yZSBsaW5lc2B9PC90ZXh0Pn1cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdub3RpY2UnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57YFx1MjY5OSAke2l0ZW0udGV4dC5yZXBsYWNlKC9eXFxbc3lzdGVtIG5vdGlmaWNhdGlvblxcXVxccyovLCAnJyl9YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAnc2tpbGwnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57YFx1MjcyNiBza2lsbDogJHtpdGVtLm5hbWV9YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAndXNlcicpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBiZzogUEFORUxfQkcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgcGFkZGluZ1k6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6ICcjZjlmYWZiJyB9fT57aXRlbS50ZXh0fTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBjb25zdCB0ZXh0ID0gaXRlbS5pbnRlcnJ1cHRlZCA/IGAke2l0ZW0udGV4dH0gKihpbnRlcnJ1cHRlZCkqYCA6IGl0ZW0udGV4dFxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgIDxNYXJrZG93biB0ZXh0PXt0ZXh0fSBoaWdobGlnaHQ9e2hpZ2hsaWdodH0gY29kZUJnPXtudWxsfSAvPlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQ0NFTlQgPSAnIzZCRTc5NSdcblxuY29uc3QgW2FjY2VudFZhbHVlLCBzZXRBY2NlbnRWYWx1ZV0gPSBjcmVhdGVTaWduYWwoREVGQVVMVF9BQ0NFTlQpXG5cbmV4cG9ydCBjb25zdCBhY2NlbnQgPSBhY2NlbnRWYWx1ZVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QWNjZW50KGNvbG9yKSB7XG4gIHNldEFjY2VudFZhbHVlKGNvbG9yIHx8IERFRkFVTFRfQUNDRU5UKVxufVxuXG5leHBvcnQgY29uc3QgRkcgPSAnI2U1ZTdlYidcbmV4cG9ydCBjb25zdCBGR19TT0ZUID0gJyM5Y2EzYWYnXG5leHBvcnQgY29uc3QgTVVURUQgPSAnIzZiNzI4MCdcbmV4cG9ydCBjb25zdCBGQUlOVCA9ICcjNGI1NTYzJ1xuZXhwb3J0IGNvbnN0IFBBTkVMX0JHID0gJyMxZTFlMjInXG5leHBvcnQgY29uc3QgU0VMRUNUX0JHID0gJyMzNzQxNTEnXG5leHBvcnQgY29uc3QgUkVEID0gJyNmODcxNzEnXG4iLCAiaW1wb3J0IHsgTWFya2Rvd24sIFNjcm9sbEJveCwgdXNlSW5wdXQgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBhY2NlbnQsIEZBSU5UIH0gZnJvbSAnLi90aGVtZS5qcydcblxuY29uc3QgSEVMUF9URVhUID0gKGNvbW1hbmRzKSA9PiBgcGljbyBpcyBhIGNvZGluZyBhZ2VudCBpbiB5b3VyIHRlcm1pbmFsLiBJdCByZWFkcywgZWRpdHMsIGFuZCBzZWFyY2hlcyBmaWxlcywgcnVucyBjb21tYW5kcywgYW5kIHN0cmVhbXMgaXRzIHdvcmsgaW50byB0aGlzIHRyYW5zY3JpcHQuXG5cbiMjIENvbW1hbmRzXG5cblR5cGUgXFxgL1xcYCBpbiB0aGUgY29tcG9zZXIgdG8gZmlsdGVyIHRoZXNlIGFzIHlvdSB0eXBlLlxuXG4ke2NvbW1hbmRzLm1hcCgoYykgPT4gYC0gXFxgLyR7Yy5uYW1lfVxcYCAtICR7Yy5kZXNjfWApLmpvaW4oJ1xcbicpfVxuXG5Ud28ga2luZHMgb2YgdXNlci1kZWZpbmVkIGVudHJpZXMgam9pbiB0aGlzIG1lbnU6XG5cbi0gKipjb21tYW5kcyoqIChcXGB+Ly5waWNvL2NvbW1hbmRzLzxuYW1lPi5tZFxcYCBvciBcXGAucGljby9jb21tYW5kcy88bmFtZT4ubWRcXGApOiBwcm9tcHQgdGVtcGxhdGVzIHlvdSBpbnZva2UgYXMgXFxgLzxuYW1lPiBbYXJnc11cXGAuIFxcYCRBUkdVTUVOVFNcXGAgaW4gdGhlIGJvZHkgaXMgcmVwbGFjZWQgd2l0aCB3aGF0ZXZlciBmb2xsb3dzIHRoZSBjb21tYW5kOyB3aXRob3V0IGEgcGxhY2Vob2xkZXIsIGFyZ3MgYXJlIGFwcGVuZGVkLiBUaGUgbW9kZWwgbmV2ZXIgc2VlcyB0aGVzZSB1bnRpbCB5b3UgcnVuIG9uZS5cbi0gKipza2lsbHMqKiAoXFxgfi8ucGljby9za2lsbHMvPG5hbWU+L1NLSUxMLm1kXFxgIG9yIFxcYC5waWNvL3NraWxscy88bmFtZT4vU0tJTEwubWRcXGApOiBjYXBhYmlsaXRpZXMgd2l0aCBhIG5hbWUgYW5kIGRlc2NyaXB0aW9uLiBZb3UgY2FuIGludm9rZSB0aGVtIGxpa2UgY29tbWFuZHMsIGFuZCB0aGUgYWdlbnQgY2FuIGFsc28gZGlzY292ZXIgYW5kIGxvYWQgdGhlbSBpdHNlbGYgdmlhIHRoZSBza2lsbCB0b29sLlxuLSAqKnRvb2xzKiogKFxcYH4vLnBpY28vdG9vbHMvPG5hbWU+LmpzXFxgIG9yIFxcYC5waWNvL3Rvb2xzLzxuYW1lPi5qc1xcYCk6IEVTIG1vZHVsZXMgZGVmYXVsdC1leHBvcnRpbmcgXFxgeyBuYW1lLCBkZXNjcmlwdGlvbiwgc2NoZW1hLCBleGVjdXRlIH1cXGAgKG9yIGEgZmFjdG9yeSByZWNlaXZpbmcgXFxgeyBjd2QsIHJvb3QgfVxcYCkuIFRoZXkgam9pbiB0aGUgYWdlbnQncyB0b29sc2V0IGFuZCBhcmUgcmVzY2FubmVkIGV2ZXJ5IHR1cm4sIHNvIGVkaXRzIGFwcGx5IG9uIHRoZSBuZXh0IG1lc3NhZ2UuIEFzayB0aGUgYWdlbnQgdG8gYnVpbGQgb25lIGZvciB5b3U6IHRoZSBidWlsdC1pbiBcXGAvbmV3LXRvb2xcXGAgc2tpbGwgdGVhY2hlcyBpdCB0aGUgZm9ybWF0LlxuXG5JbiB0aGUgTUNQIHBhbmVsOiBzcGFjZSBvciBlbnRlciB0b2dnbGVzIGEgc2VydmVyLCBcXGB0XFxgIGxpc3RzIGl0cyB0b29scywgXFxgclxcYCByZWNvbm5lY3RzLCBcXGBhXFxgIGFkZHMsIFxcYGRcXGAgcmVtb3Zlcy4gVW5maWx0ZXJlZCBsaXN0cyAoZWZmb3J0LCByZXdpbmQgb3B0aW9ucywgTUNQKSBhbHNvIG1vdmUgd2l0aCBcXGBqXFxgL1xcYGtcXGAgYW5kIGp1bXAgd2l0aCBcXGBnXFxgL1xcYEdcXGAuXG5cbiMjIENvbXBvc2VyXG5cbi0gXFxgZW50ZXJcXGAgc2VuZHMsIFxcYHNoaWZ0K2VudGVyXFxgIGluc2VydHMgYSBuZXdsaW5lXG4tIFxcYEBcXGAgb3BlbnMgYSBmdXp6eSBmaWxlIHBpY2tlcjsgZW50ZXIgaW5zZXJ0cyB0aGUgc2VsZWN0ZWQgcGF0aFxuLSBkcmFnIGFuIGltYWdlIGZpbGUgaW50byB0aGUgdGVybWluYWwgdG8gYXR0YWNoIGl0OiBpdCBhcHBlYXJzIGlubGluZSBhcyBcXGBbSW1hZ2UgI05dXFxgLCBleGFjdGx5IHdoZXJlIHlvdXIgY3Vyc29yIGlzLCBzbyBpbWFnZXMgY2FuIHNpdCBiZXR3ZWVuIHNlbnRlbmNlczsgYmFja3NwYWNlIGFmdGVyIG9uZSByZW1vdmVzIHRoZSB3aG9sZSBhdHRhY2htZW50XG4tIFxcYHRhYlxcYCBjb21wbGV0ZXM6IFxcYC9zdW1tPHRhYj5cXGAgZmluaXNoZXMgdGhlIGNvbW1hbmQgbmFtZSBhbmQgY3ljbGVzIHRocm91Z2ggbWF0Y2hlcyBvbiByZXBlYXQ7IGFmdGVyIGFuIGFyZ3VtZW50IHNwYWNlIGl0IGNvbXBsZXRlcyB2YWx1ZXMgKFxcYC9tb2RlbCBmbGE8dGFiPlxcYCwgXFxgL2NvbG9yIDx0YWI+XFxgLCBcXGAvZWZmb3J0IDx0YWI+XFxgKSBhbmQgZmlsZSBwYXRocyBmb3Igc2tpbGxzIGFuZCBjb21tYW5kcy4gS2VlcCB0eXBpbmcgdG8gbmFycm93LCB0YWIgb3IgZW50ZXIgaW5zZXJ0c1xuLSBcXGB1cFxcYCBhbmQgXFxgZG93blxcYCBvbiBhbiBlbXB0eSBjb21wb3NlciByZWNhbGwgbWVzc2FnZXMgeW91IGFscmVhZHkgc2VudFxuLSBcXGBjdHJsK3JcXGAgZnV6enktc2VhcmNoZXMgeW91ciBwcm9tcHQgaGlzdG9yeSB3aXRoIGEgcHJldmlldzsgZW50ZXIgcHV0cyB0aGUgbWF0Y2ggYmFjayBpbiB0aGUgY29tcG9zZXJcbi0gXFxgY3RybCtzXFxgIG9wZW5zIHRoZSBzZXNzaW9uIHBpY2tlciAoc2FtZSBhcyBcXGAvcmVzdW1lXFxgKTsgXFxgY3RybCt0XFxgIG9wZW5zIHRoZSBtb2RlbCBwaWNrZXJcbi0gXFxgY3RybCtwXFxgIHN3aXRjaGVzIHByb2plY3RzOiBwaWNrIG9uZSBhbmQgcGljbyBqdW1wcyB0byBpdHMgbW9zdCByZWNlbnQgc2Vzc2lvbiwgY2hhbmdpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LCB0b29scywgY29udGV4dCwgYW5kIE1DUCBzZXJ2ZXJzIHRvIG1hdGNoOyBcXGAvbmV3XFxgIHN0YXJ0cyBhIGZyZXNoIHNlc3Npb24gaW4gdGhlIGN1cnJlbnQgcHJvamVjdFxuLSBcXGBjdHJsK2JcXGAgY3ljbGVzIHRoaW5raW5nIGVmZm9ydCAoZGVmYXVsdCwgbG93LCBtZWRpdW0sIGhpZ2gsIG1heCkgb24gbW9kZWxzIHRoYXQgc3VwcG9ydCBpdDsgXFxgL2VmZm9ydFxcYCBvcGVucyB0aGUgZnVsbCBwaWNrZXJcbi0gaW5zaWRlIGEgc2VhcmNoIHBhbmVsLCBcXGBjdHJsK3NcXGAgY3ljbGVzIHRoZSBzY29wZSBpbnN0ZWFkOiB0aGlzIHNlc3Npb24sIHRoaXMgcHJvamVjdCwgb3IgZXZlcnl3aGVyZVxuLSBcXGAvcmV3aW5kXFxgIHJlc3RvcmVzIHRoZSBjb252ZXJzYXRpb24gdG8gYW4gZWFybGllciBtZXNzYWdlOyBhIHJld2luZCBjYW4gYmUgdW5kb25lIHdpdGggXFxgY3RybCt6XFxgXG4tIG1lc3NhZ2VzIHNlbnQgd2hpbGUgdGhlIGFnZW50IGlzIHJlc3BvbmRpbmcgcXVldWUgdXAgYWJvdmUgdGhlIGNvbXBvc2VyIGFuZCBhcmUgZGVsaXZlcmVkIGFzIG9uZSBtZXNzYWdlIHdoZW4gdGhlIHR1cm4gZmluaXNoZXM7IFxcYHVwXFxgIHB1bGxzIHRoZW0gYmFjayBmb3IgZWRpdGluZ1xuLSBcXGBlc2NcXGAgaW50ZXJydXB0cyBhIHN0cmVhbWluZyByZXNwb25zZSwgb3IgY2xlYXJzIHRoZSBjb21wb3NlciB3aGVuIGlkbGVcblxuIyMgTW92aW5nIGFyb3VuZFxuXG4tIFxcYHRhYlxcYCBzd2l0Y2hlcyBmb2N1cyBiZXR3ZWVuIHRoZSB0cmFuc2NyaXB0IGFuZCB0aGUgY29tcG9zZXJcbi0gd2l0aCB0aGUgdHJhbnNjcmlwdCBmb2N1c2VkLCBcXGB1cFxcYC9cXGBkb3duXFxgL1xcYGpcXGAvXFxga1xcYCBzY3JvbGwgYW5kIFxcYGdcXGAvXFxgR1xcYCBqdW1wIHRvIHRoZSBlbmRzXG4tIFxcYGN0cmwrb1xcYCBleHBhbmRzIGFuZCBjb2xsYXBzZXMgdG9vbCBvdXRwdXQgaW4gdGhlIHRyYW5zY3JpcHRcbi0gdGhlIG1vdXNlIHdoZWVsIHNjcm9sbHM7IGNsaWNrLWRyYWcgc2VsZWN0cyB0ZXh0IGFuZCBjb3BpZXMgaXQgb24gcmVsZWFzZVxuLSBcXGBjdHJsK2NcXGAgdHdpY2UgZXhpdHNcblxuIyMgU2hlbGxzXG5cblRoZSBhZ2VudCBjYW4gcnVuIGxvbmctbGl2ZWQgcHJvY2Vzc2VzIChkZXYgc2VydmVycywgd2F0Y2hlcnMpIHdpdGggXFxgYmFzaCBiYWNrZ3JvdW5kOiB0cnVlXFxgLCB0aGVuIHJlYWQgdGhlaXIgb3V0cHV0IGFuZCBzdG9wIHRoZW0gaXRzZWxmLiBcXGAvc2hlbGxzXFxgIGxpc3RzIHRoZW06IGVudGVyIG9wZW5zIGEgbGl2ZSBvdXRwdXQgdmlldywgXFxga1xcYCBraWxscyAocHJlc3MgdHdpY2UpLCBcXGBkXFxgIGRpc21pc3NlcyBhIGRlYWQgb25lLiBBIFxcYFx1MjY5OSBOXFxgIGluIHRoZSBmb290ZXIgc2hvd3MgaG93IG1hbnkgYXJlIHJ1bm5pbmcuIFdoZW4gYSBzaGVsbCBleGl0cyBvbiBpdHMgb3duLCB0aGUgYWdlbnQgaXMgbm90aWZpZWQgYW5kIHJlc3BvbmRzOyBzaGVsbHMgZGllIHdpdGggcGljbywgYW5kIHF1aXR0aW5nIHdhcm5zIHlvdSBpZiBhbnkgYXJlIHN0aWxsIHVwLlxuXG4jIyBTdWJzY3JpcHRpb25zXG5cblxcYC9jb25uZWN0XFxgIGxpc3RzIHN1YnNjcmlwdGlvbiBwcm92aWRlcnMgeW91IGNhbiBzaWduIGluIHdpdGggaW5zdGVhZCBvZiBBUEkga2V5cy4gT3BlbkFJIChDaGF0R1BUIC8gQ29kZXggcGxhbikgc2lnbnMgaW4gdGhyb3VnaCB5b3VyIGJyb3dzZXIgdmlhIE9BdXRoOyB0b2tlbnMgYXJlIHN0b3JlZCBpbiBcXGB+Ly5waWNvL2F1dGguanNvblxcYCBhbmQgcmVmcmVzaGVkIGF1dG9tYXRpY2FsbHksIHNvIHlvdSBzaWduIGluIG9uY2UuIE9uY2UgY29ubmVjdGVkLCBjb2RleCBtb2RlbHMgYXBwZWFyIGluIFxcYC9tb2RlbFxcYCwgYmlsbGVkIHRvIHlvdXIgcGxhbi4gXFxgZFxcYCBpbiB0aGUgcGFuZWwgZGlzY29ubmVjdHMuXG5cbiMjIE1lbW9yeVxuXG5UaGUgYWdlbnQgc2F2ZXMgZHVyYWJsZSBmYWN0cyB3aXRoIHRoZSByZW1lbWJlciB0b29sOiBvbmUgZmlsZSBwZXIgbWVtb3J5IHVuZGVyIFxcYH4vLnBpY28vbWVtb3J5XFxgIChnbG9iYWwpIG9yIHRoZSBwcm9qZWN0J3MgZGlyZWN0b3J5IGluIFxcYH4vLnBpY28vcHJvamVjdHNcXGAuIE9ubHkgYSBvbmUtbGluZSBpbmRleCBpcyBpbiBpdHMgY29udGV4dDsgaXQgbG9hZHMgYSBzcGVjaWZpYyBtZW1vcnkgd2l0aCB0aGUgcmVjYWxsIHRvb2wgd2hlbiByZWxldmFudC4gXFxgL21lbW9yeVxcYCBsaXN0cyBldmVyeXRoaW5nIGl0IGtub3dzLiBBc2sgaXQgdG8gcmVtZW1iZXIsIGZvcmdldCwgb3IgY2xlYW4gdXAgaXRzIG1lbW9yaWVzIGluIHBsYWluIGxhbmd1YWdlLlxuXG4jIyBXYWtlLXVwc1xuXG5UaGUgYWdlbnQgY2FuIHNjaGVkdWxlIG9uZS10aW1lIHdha2UtdXBzIGZvciBpdHNlbGYgd2l0aCB0aGUgc2NoZWR1bGVfd2FrZXVwIHRvb2w6IGFmdGVyIHRoZSBkZWxheSBpdCByZWNlaXZlcyBpdHMgb3duIG5vdGUgYXMgYSBzeXN0ZW0gbm90aWZpY2F0aW9uIGFuZCBhY3RzIG9uIGl0LiBSZWN1cnJpbmcgbG9vcHMgYXJlIGp1c3QgdGhlIGFnZW50IHJlc2NoZWR1bGluZyBhdCB0aGUgZW5kIG9mIGVhY2ggd2FrZS11cC4gXFxgL3dha2V1cHNcXGAgbGlzdHMgcGVuZGluZyBvbmVzIHdpdGggbGl2ZSBjb3VudGRvd25zOyBlbnRlciBvciBcXGBrXFxgIGNhbmNlbHMuIEEgXFxgXHUyM0YwIE5cXGAgaW4gdGhlIGZvb3RlciBzaG93cyBob3cgbWFueSBhcmUgcGVuZGluZy4gV2FrZS11cHMgbGl2ZSBpbiBtZW1vcnkgYW5kIGFyZSBsb3N0IHdoZW4gcGljbyBleGl0cy5cblxuIyMgQ29udGV4dFxuXG5waWNvIHJlYWRzIEFHRU5UUy5tZCBmaWxlcyBhdXRvbWF0aWNhbGx5OiBhIGdsb2JhbCBvbmUgZnJvbSB+Ly5waWNvLCB0aGVuIGV2ZXJ5IGFuY2VzdG9yIG9mIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgdXAgdG8gdGhlIGdpdCByb290LiBEZWVwZXIgZmlsZXMgd2luLiBBR0VOVFMubWQgZmlsZXMgaW4gc3ViZGlyZWN0b3JpZXMgbG9hZCBsYXppbHkgdGhlIGZpcnN0IHRpbWUgYSB0b29sIHRvdWNoZXMgdGhhdCBzdWJ0cmVlLlxuXG5TZXNzaW9ucyBhcmUgc3RvcmVkIHVuZGVyIH4vLnBpY28gYXMganNvbmwgZXZlbnQgbG9nczsgXFxgL3Jlc3VtZVxcYCBmb2xkcyBvbmUgYmFjayBpbnRvIGV4YWN0bHkgdGhpcyB2aWV3LlxuXG5UaGUgZm9vdGVyJ3MgXFxgY3R4ICVcXGAgc2hvd3MgaG93IGZ1bGwgdGhlIG1vZGVsJ3MgY29udGV4dCBpcy4gQXQgODUlIHBpY28gYXV0by1jb21wYWN0czogdGhlIG9sZGVyIGNvbnZlcnNhdGlvbiBpcyBzdW1tYXJpemVkIGluIGEgc3RydWN0dXJlZCBmb3JtLCB0aGUgbW9zdCByZWNlbnQgdHVybnMgYXJlIGtlcHQgdmVyYmF0aW0sIGFuZCB0aGUgbW9kZWwgaXMgdG9sZCB3aGVyZSB0aGUgZnVsbCBzZXNzaW9uIGZpbGUgbGl2ZXMgc28gaXQgY2FuIHJlYWQgZXhhY3QgZGV0YWlscyBiYWNrIG9uIGRlbWFuZC4gTm90aGluZyB2aXNpYmxlIGNoYW5nZXMgaW4gdGhlIHRyYW5zY3JpcHQsIGFuZCByZXdpbmQgc3RpbGwgd29ya3MgYWNyb3NzIGl0LiBcXGAvY29tcGFjdFxcYCBydW5zIGl0IG1hbnVhbGx5IGFuZCB0YWtlcyBvcHRpb25hbCBmb2N1cyBpbnN0cnVjdGlvbnMgKFxcYC9jb21wYWN0IGZvY3VzIG9uIHRoZSBBUEkgY2hhbmdlc1xcYCkuIFNldCBcXGBcImF1dG9Db21wYWN0XCI6IGZhbHNlXFxgIGluIFxcYH4vLnBpY28vY29uZmlnLmpzb25cXGAgdG8gZGlzYWJsZSB0aGUgYXV0b21hdGljIHRyaWdnZXIuXG5cbi0tLVxuXG4qZXNjIHRha2VzIHlvdSBiYWNrIHRvIHRoZSBjb252ZXJzYXRpb24qYFxuXG5leHBvcnQgZnVuY3Rpb24gSGVscCh7IGNvbW1hbmRzLCBvbkNsb3NlIH0pIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6ICcxMDAlJywgcGFkZGluZ1g6IDIsIHBhZGRpbmdZOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19PnBpY28gXHUwMEI3IGhlbHA8L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Plx1MjE5MVx1MjE5MyBzY3JvbGwgXHUwMEI3IGVzYyBiYWNrPC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkIHNjcm9sbGJhcj5cbiAgICAgICAgPE1hcmtkb3duIHRleHQ9e0hFTFBfVEVYVChjb21tYW5kcyl9IGNvZGVCZz17bnVsbH0gLz5cbiAgICAgIDwvU2Nyb2xsQm94PlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCBCdXR0b24sIE1lbnUsIFBpY2tMaXN0LCBSYWRpbywgU2Nyb2xsQm94LCBUZXh0SW5wdXQsIHVzZUZvY3VzLCB1c2VJbnB1dCwgdXNlSW50ZXJ2YWwgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBhY2NlbnQsIEZHLCBGR19TT0ZULCBNVVRFRCwgRkFJTlQsIFBBTkVMX0JHLCBTRUxFQ1RfQkcsIFJFRCB9IGZyb20gJy4vdGhlbWUuanMnXG5pbXBvcnQgeyBmdXp6eVNjb3JlIH0gZnJvbSAnLi9mdXp6eS5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVBZ28oYXQpIHtcbiAgY29uc3QgcyA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IoKERhdGUubm93KCkgLSBhdCkgLyAxMDAwKSlcbiAgaWYgKHMgPCA2MCkgcmV0dXJuIGAke3N9cyBhZ29gXG4gIGNvbnN0IG0gPSBNYXRoLmZsb29yKHMgLyA2MClcbiAgaWYgKG0gPCA2MCkgcmV0dXJuIGAke219bSBhZ29gXG4gIGNvbnN0IGggPSBNYXRoLmZsb29yKG0gLyA2MClcbiAgaWYgKGggPCAyNCkgcmV0dXJuIGAke2h9aCBhZ29gXG4gIHJldHVybiBgJHtNYXRoLmZsb29yKGggLyAyNCl9ZCBhZ29gXG59XG5cbmZ1bmN0aW9uIFBhbmVsRnJhbWUoeyB0aXRsZSwgaGludCwgcmlnaHQsIGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19Pnt0aXRsZX08L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAge3JpZ2h0fVxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2hpbnR9PC90ZXh0PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY29wZVRhYnMoeyBzY29wZXMsIGFjdGl2ZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgIHtzY29wZXMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgIDx0ZXh0IGtleT17c30gc3R5bGU9e3sgY29sb3I6IGkgPT09IGFjdGl2ZSA/IGFjY2VudCgpIDogRkFJTlQsIGJvbGQ6IGkgPT09IGFjdGl2ZSB9fT57YCR7aSA+IDAgPyAnICAnIDogJyd9JHtzfWB9PC90ZXh0PlxuICAgICAgKSl9XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vZGVsUGFuZWwoeyBtb2RlbHMsIGN1cnJlbnQsIGRlZmF1bHROYW1lLCBmb2N1c2VkLCBvblBpY2ssIG9uUGlja0RlZmF1bHQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gY3JlYXRlU2lnbmFsKG1vZGVsc1swXSB8fCBudWxsKVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgY3Vyc29yKCkpIHtcbiAgICAgIG9uUGlja0RlZmF1bHQoY3Vyc29yKCkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiU2VsZWN0IG1vZGVsXCIgaGludD1cInR5cGUgdG8gZmlsdGVyIFx1MDBCNyBlbnRlcjogdGhpcyBzZXNzaW9uIFx1MDBCNyBjdHJsK3M6IHNldCBhcyBkZWZhdWx0IFx1MDBCNyBlc2M6IGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICBpdGVtcz17bW9kZWxzfVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgbW9kZWxzLi4uXCJcbiAgICAgICAgICBmaWx0ZXI9eyhxLCBtKSA9PiBmdXp6eVNjb3JlKHEsIG0ubmFtZSkgPj0gMH1cbiAgICAgICAgICBvbkN1cnNvckNoYW5nZT17c2V0Q3Vyc29yfVxuICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgIGl0ZW1IZWlnaHQ9ezJ9XG4gICAgICAgICAgc2Nyb2xsb2ZmPXsxfVxuICAgICAgICAgIHJlbmRlckl0ZW09eyhtLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9mZiA9IG0uYXZhaWxhYmxlID09PSBmYWxzZVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgYm9sZDogIW9mZiwgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IG9mZiA/IE1VVEVEIDogRkcgfX0+e20ubmFtZX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICB7bS5uYW1lID09PSBjdXJyZW50ICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBhY2NlbnQoKSB9fT57JyBcdTI3MTMnfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgICB7bS5uYW1lID09PSBkZWZhdWx0TmFtZSAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogTVVURUQgfX0+eycgXHUwMEI3IGRlZmF1bHQnfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogTVVURUQgfX0+XG4gICAgICAgICAgICAgICAgICAgIHtvZmYgPyBgbmVlZHMgJHttLmtleUhpbnR9YCA6IG0ucHJpY2UgPyBgJCR7bS5wcmljZS5pbn0gaW4gXHUwMEI3ICQke20ucHJpY2Uub3V0fSBvdXRgIDogbS5wcm92aWRlciA9PT0gJ2NvZGV4JyA/ICdzdWJzY3JpcHRpb24nIDogJ3ByaWNlIHVua25vd24nfVxuICAgICAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBNVVRFRCB9fT57bS5kZXNjfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGlzdG9yeVBhbmVsKHsgcHJvbXB0cywgc2NvcGVzLCBzY29wZUluZGV4LCBmb2N1c2VkLCBvblBpY2ssIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBjcmVhdGVTaWduYWwocHJvbXB0c1swXSB8fCBudWxsKVxuICBjb25zdCBbcXVlcnksIHNldFF1ZXJ5XSA9IGNyZWF0ZVNpZ25hbCgnJylcbiAgY29uc3QgYW55TWF0Y2ggPSBwcm9tcHRzLnNvbWUoKHApID0+IGZ1enp5U2NvcmUocXVlcnkoKSwgcC50ZXh0KSA+PSAwKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWVcbiAgICAgIHRpdGxlPVwiU2VhcmNoIHByb21wdHNcIlxuICAgICAgaGludD1cInR5cGUgdG8gZmlsdGVyIFx1MDBCNyBcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgY3RybCtzIHNjb3BlIFx1MDBCNyBlbnRlciB0byBlZGl0IFx1MDBCNyBlc2MgdG8gY2xvc2VcIlxuICAgICAgcmlnaHQ9ezxTY29wZVRhYnMgc2NvcGVzPXtzY29wZXN9IGFjdGl2ZT17c2NvcGVJbmRleH0gLz59XG4gICAgPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxLCBnYXA6IDIgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnNTAlJyB9fT5cbiAgICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXtwcm9tcHRzfVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIHByb21wdHMuLi5cIlxuICAgICAgICAgICAgZmlsdGVyPXsocSwgcCkgPT4gZnV6enlTY29yZShxLCBwLnRleHQpID49IDB9XG4gICAgICAgICAgICBvbkNoYW5nZT17c2V0UXVlcnl9XG4gICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KHApID0+IHNldFByZXZpZXcocCl9XG4gICAgICAgICAgICBvblN1Ym1pdD17KHApID0+IG9uUGljayhwLnRleHQpfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhwLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PntwLnRleHQucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7dGltZUFnbyhwLmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7YW55TWF0Y2ggJiYgcHJldmlldygpID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PntwcmV2aWV3KCkudGV4dC5zbGljZSgwLCAyMDAwKX08L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBtYXRjaGluZyBwcm9tcHRzPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXdpbmRQaWNrUGFuZWwoeyBlbnRyaWVzLCBzdGF0cywgZm9jdXNlZCwgb25QaWNrLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKGVudHJpZXNbMF0gfHwgbnVsbClcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiUmV3aW5kIHRvIGEgbWVzc2FnZVwiIGhpbnQ9XCJ0eXBlIHRvIGZpbHRlciBcdTAwQjcgXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGVudGVyIHRvIGNob29zZSBcdTAwQjcgZXNjIHRvIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e2VudHJpZXN9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgbWVzc2FnZXMuLi5cIlxuICAgICAgICAgICAgZmlsdGVyPXsocSwgbSkgPT4gZnV6enlTY29yZShxLCBtLnRleHQpID49IDB9XG4gICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KG0pID0+IHNldFByZXZpZXcobSl9XG4gICAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhtLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PnttLnRleHQucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7c3RhdHMobS5pbmRleCkubXNnc30gYWZ0ZXJgfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldygpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PntwcmV2aWV3KCkudGV4dC5zbGljZSgwLCAyMDAwKX08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YHJld2luZGluZyBoZXJlIGRyb3BzICR7c3RhdHMocHJldmlldygpLmluZGV4KS5tc2dzfSBlbnRyaWVzYH08L3RleHQ+XG4gICAgICAgICAgICAgIHtzdGF0cyhwcmV2aWV3KCkuaW5kZXgpLmVkaXRzLm1hcCgobSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICBcdTIxQTkgJHttLnRpdGxlfWB9PC90ZXh0PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgbWVzc2FnZXM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJld2luZEFjdGlvblBhbmVsKHsgdGFyZ2V0LCBvcHRpb25zLCBmb2N1c2VkLCBvblN1Ym1pdCwgb25CYWNrIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19PlJld2luZCBvcHRpb25zPC90ZXh0PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PnsndG86ICd9PC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGR19TT0ZUIH19Pnt0YXJnZXQudGV4dC5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtvcHRpb25zfVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17NH1cbiAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9e29uU3VibWl0fVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkJhY2t9XG4gICAgICAgICAgcmVuZGVySXRlbT17KG8sIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57by5sYWJlbH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7by5kZXNjfWB9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PmVudGVyIHRvIGNvbmZpcm0gXHUwMEI3IGVzYyB0byBwaWNrIGEgZGlmZmVyZW50IG1lc3NhZ2U8L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gdXNlRXNjYXBlKGZvY3VzZWQsIG9uQ2xvc2UpIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKCkpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICBvbkNsb3NlKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVzdW1lUGFuZWwoeyBzZXNzaW9ucywgc2NvcGVzLCBzY29wZUluZGV4LCBsb2FkaW5nLCBmb2N1c2VkLCBvblBpY2ssIG9uRGVsZXRlLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKHNlc3Npb25zWzBdIHx8IG51bGwpXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnICYmIHByZXZpZXcoKSkge1xuICAgICAgb25EZWxldGUocHJldmlldygpKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJSZXN1bWUgYSBzZXNzaW9uXCJcbiAgICAgIGhpbnQ9XCJ0eXBlIHRvIGZpbHRlciBcdTAwQjcgXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGN0cmwrcyBzY29wZSBcdTAwQjcgZW50ZXIgdG8gcmVzdW1lIFx1MDBCNyBjdHJsK3ggZGVsZXRlIFx1MDBCNyBlc2MgdG8gY2xvc2VcIlxuICAgICAgcmlnaHQ9ezxTY29wZVRhYnMgc2NvcGVzPXtzY29wZXN9IGFjdGl2ZT17c2NvcGVJbmRleH0gLz59XG4gICAgPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxLCBnYXA6IDIgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnNTAlJyB9fT5cbiAgICAgICAgICB7bG9hZGluZyA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT5sb2FkaW5nIHNlc3Npb25zLi4uPC90ZXh0PlxuICAgICAgICAgICkgOiBzZXNzaW9ucy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gc2Vzc2lvbnMgaGVyZSB5ZXQ8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgIGl0ZW1zPXtzZXNzaW9uc31cbiAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiAhbG9hZGluZ31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgc2Vzc2lvbnMuLi5cIlxuICAgICAgICAgICAgICBmaWx0ZXI9eyhxLCBzKSA9PiBmdXp6eVNjb3JlKHEsIHMudGl0bGUpID49IDB9XG4gICAgICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXsocykgPT4gc2V0UHJldmlldyhzKX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIHNjcm9sbGJhclxuICAgICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICAgIHJlbmRlckl0ZW09eyhzLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgICAge3MuY29sb3IgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IHMuY29sb3IgfX0+eydcdTI1QUEgJ308L3RleHQ+fVxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PntzLnRpdGxlLnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHt0aW1lQWdvKHMuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAge3ByZXZpZXcoKSA/IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57cHJldmlldygpLnRpdGxlLnNsaWNlKDAsIDUwMCl9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake3ByZXZpZXcoKS50dXJuc30gJHtwcmV2aWV3KCkudHVybnMgPT09IDEgPyAndHVybicgOiAndHVybnMnfSBcdTAwQjcgJHt0aW1lQWdvKHByZXZpZXcoKS5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e3ByZXZpZXcoKS5oZWFkZXIucm9vdH08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHNlc3Npb25zPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFZmZvcnRQYW5lbCh7IGxldmVscywgY3VycmVudCwgZGVmYXVsdExldmVsLCBmb2N1c2VkLCBvblBpY2ssIG9uUGlja0RlZmF1bHQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IGl0ZW1zID0gbGV2ZWxzXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJykge1xuICAgICAgb25QaWNrRGVmYXVsdChpdGVtc1tjdXJzb3IoKV0pXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBsYWJlbCA9IChsKSA9PiAobC5rZXkgPT09IG51bGwgPyAnZGVmYXVsdCcgOiBsLmtleSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiVGhpbmtpbmcgZWZmb3J0XCIgaGludD1cImovayB0byBtb3ZlIFx1MDBCNyBlbnRlcjogdGhpcyBzZXNzaW9uIFx1MDBCNyBjdHJsK3M6IHNldCBhcyBkZWZhdWx0IFx1MDBCNyBlc2M6IGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgICBzZWxlY3RlZD17Y3Vyc29yKCl9XG4gICAgICAgICAgb25TZWxlY3Q9e3NldEN1cnNvcn1cbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgdmltS2V5c1xuICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgcmVuZGVySXRlbT17KGwsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntsYWJlbChsKS5wYWRFbmQoMTApfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntsLmRlc2N9PC90ZXh0PlxuICAgICAgICAgICAgICB7bC5rZXkgPT09IGN1cnJlbnQgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogTVVURUQgfX0+eycgIFx1MjcxMyd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAge2wua2V5ID09PSBkZWZhdWx0TGV2ZWwgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnICBcdTAwQjcgZGVmYXVsdCd9PC90ZXh0Pn1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEluZm9MaXN0UGFuZWwoeyB0aXRsZSwgcm93cywgZm9jdXNlZCwgb25DbG9zZSB9KSB7XG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9e3RpdGxlfSBoaW50PVwiai9rIG9yIFx1MjE5MVx1MjE5MyB0byBzY3JvbGwgXHUwMEI3IGVzYyBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAxNCwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICB7cm93cy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vdGhpbmcgaGVyZSB5ZXQ8L3RleHQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkPXtmb2N1c2VkfSBzY3JvbGxiYXI+XG4gICAgICAgICAgICB7cm93cy5tYXAoKHJvdywgaSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IGtleT17YCR7cm93Lm5hbWV9LSR7aX1gfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiBpID09PSAwID8gMCA6IDEgfX0+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57cm93Lm5hbWV9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgICAgICAgICAge3Jvdy5ub3RlICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57cm93Lm5vdGV9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e3Jvdy5kZXNjIHx8ICdubyBkZXNjcmlwdGlvbid9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQcm9qZWN0UGFuZWwoeyBwcm9qZWN0cywgbG9hZGluZywgZm9jdXNlZCwgb25QaWNrLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKHByb2plY3RzWzBdIHx8IG51bGwpXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJTd2l0Y2ggcHJvamVjdFwiIGhpbnQ9XCJ0eXBlIHRvIGZpbHRlciBcdTAwQjcgXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGVudGVyIHRvIGp1bXAgdG8gaXRzIGxhc3Qgc2Vzc2lvbiBcdTAwQjcgZXNjIHRvIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PmxvYWRpbmcgcHJvamVjdHMuLi48L3RleHQ+XG4gICAgICAgICAgKSA6IHByb2plY3RzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBrbm93biBwcm9qZWN0cyB5ZXQ8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgIGl0ZW1zPXtwcm9qZWN0c31cbiAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiAhbG9hZGluZ31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgcHJvamVjdHMuLi5cIlxuICAgICAgICAgICAgICBmaWx0ZXI9eyhxLCBwKSA9PiBmdXp6eVNjb3JlKHEsIHAucGF0aCkgPj0gMH1cbiAgICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9eyhwKSA9PiBzZXRQcmV2aWV3KHApfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KHAsIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgICB7cC5sYXRlc3QuY29sb3IgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IHAubGF0ZXN0LmNvbG9yIH19PnsnXHUyNUFBICd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57cC5wYXRofTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHtwLmN1cnJlbnQgPyAnY3VycmVudCBcdTAwQjcgJyA6ICcnfSR7dGltZUFnbyhwLmxhdGVzdC5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldygpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHLCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57cHJldmlldygpLnBhdGh9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkdfU09GVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2BsYXN0OiAke3ByZXZpZXcoKS5sYXRlc3QudGl0bGUucmVwbGFjZSgvXFxuL2csICcgJyl9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCR7cHJldmlldygpLmNvdW50fSAke3ByZXZpZXcoKS5jb3VudCA9PT0gMSA/ICdzZXNzaW9uJyA6ICdzZXNzaW9ucyd9IFx1MDBCNyAke3RpbWVBZ28ocHJldmlldygpLmxhdGVzdC5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHByb2plY3RzPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTaGVsbHNQYW5lbCh7IHZlcnNpb24sIHNoZWxscywgcmVhZE91dHB1dCwgZm9jdXNlZCwgb25LaWxsLCBvbkRpc21pc3MsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbdmlld2luZywgc2V0Vmlld2luZ10gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsICgpID0+ICh2aWV3aW5nKCkgPyBzZXRWaWV3aW5nKG51bGwpIDogb25DbG9zZSgpKSlcbiAgdm9pZCB2ZXJzaW9uXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiBzaGVsbHNbTWF0aC5taW4oaW5kZXgoKSwgc2hlbGxzLmxlbmd0aCAtIDEpXSB8fCBudWxsXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkIHx8IHZpZXdpbmcoKSkgcmV0dXJuXG4gICAgY29uc3QgcyA9IHNlbGVjdGVkKClcbiAgICBpZiAocyAmJiBldmVudC5rZXkgPT09ICdrJyAmJiAhZXZlbnQuY3RybCkge1xuICAgICAgb25LaWxsKHMpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH0gZWxzZSBpZiAocyAmJiBldmVudC5rZXkgPT09ICdkJyAmJiAhZXZlbnQuY3RybCkge1xuICAgICAgb25EaXNtaXNzKHMpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCB1cHRpbWUgPSAocykgPT4ge1xuICAgIGNvbnN0IHNlY3MgPSBNYXRoLmZsb29yKCgocy5lbmRlZEF0IHx8IERhdGUubm93KCkpIC0gcy5zdGFydGVkQXQpIC8gMTAwMClcbiAgICByZXR1cm4gc2VjcyA8IDYwID8gYCR7c2Vjc31zYCA6IGAke01hdGguZmxvb3Ioc2VjcyAvIDYwKX1tJHtzZWNzICUgNjB9c2BcbiAgfVxuXG4gIGlmICh2aWV3aW5nKCkpIHtcbiAgICBjb25zdCBvdXQgPSByZWFkT3V0cHV0KHZpZXdpbmcoKSlcbiAgICBpZiAoIW91dCkge1xuICAgICAgc2V0Vmlld2luZyhudWxsKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsaW5lcyA9IG91dC5vdXRwdXQgPyBvdXQub3V0cHV0LnNwbGl0KCdcXG4nKSA6IFtdXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8UGFuZWxGcmFtZVxuICAgICAgICAgIHRpdGxlPXtgc2hlbGwgJHtvdXQuaWR9IFx1MDBCNyAke291dC5jb21tYW5kLnNsaWNlKDAsIDYwKX1gfVxuICAgICAgICAgIGhpbnQ9e2Ake291dC5zdGF0dXMgPT09ICdydW5uaW5nJyA/ICdydW5uaW5nJyA6IGBleGl0ZWQgXHUwMEI3IGNvZGUgJHtvdXQuZXhpdENvZGV9YH0gXHUwMEI3ICR7b3V0LnRvdGFsTGluZXN9IGxpbmVzIFx1MDBCNyBqL2sgc2Nyb2xsIFx1MDBCNyBlc2MgYmFja2B9XG4gICAgICAgID5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IDE2LCBtYXJnaW5Ub3A6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICB7bGluZXMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gb3V0cHV0IHlldDwvdGV4dD5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZH0gc2Nyb2xsT2Zmc2V0PXsxZTl9IG9uU2Nyb2xsPXsoKSA9PiB7fX0gc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICAgIHtsaW5lcy5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICA8L1BhbmVsRnJhbWU+XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlNoZWxsc1wiIGhpbnQ9XCJlbnRlciB2aWV3IG91dHB1dCBcdTAwQjcgayBraWxsIFx1MDBCNyBkIGRpc21pc3MgXHUwMEI3IGVzYyBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICB7c2hlbGxzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gYmFja2dyb3VuZCBzaGVsbHMgXHUwMEI3IHRoZSBhZ2VudCBzdGFydHMgdGhlbSB3aXRoIGJhc2ggYmFja2dyb3VuZDogdHJ1ZTwvdGV4dD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e3NoZWxsc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezZ9XG4gICAgICAgICAgICB2aW1LZXlzPXtmYWxzZX1cbiAgICAgICAgICAgIG9uU3VibWl0PXsocykgPT4gc2V0Vmlld2luZyhzLmlkKX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KHMsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8gYWNjZW50KCkgOiBzLmV4aXRDb2RlID09PSAwID8gTVVURUQgOiBSRUQgfX0+XG4gICAgICAgICAgICAgICAgICB7cy5zdGF0dXMgPT09ICdydW5uaW5nJyA/ICdcdTI2OTknIDogcy5leGl0Q29kZSA9PT0gMCA/ICdcdTI3MTMnIDogJ1x1MjcxNyd9XG4gICAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgICR7cy5pZC5wYWRFbmQoMyl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBhY3RpdmUgPyBGRyA6IEZHX1NPRlQgfX0+e3MuY29tbWFuZH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICAke3Muc3RhdHVzID09PSAncnVubmluZycgPyBgdXAgJHt1cHRpbWUocyl9YCA6IGBleGl0ICR7cy5leGl0Q29kZX0gXHUwMEI3ICR7dXB0aW1lKHMpfWB9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDb25uZWN0UGFuZWwoeyBwcm92aWRlcnMsIGZvY3VzZWQsIG9uQ29ubmVjdCwgb25EaXNjb25uZWN0LCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiBwcm92aWRlcnNbTWF0aC5taW4oaW5kZXgoKSwgcHJvdmlkZXJzLmxlbmd0aCAtIDEpXSB8fCBudWxsXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBjb25zdCBwID0gc2VsZWN0ZWQoKVxuICAgIGlmIChwICYmIGV2ZW50LmtleSA9PT0gJ2QnICYmICFldmVudC5jdHJsICYmIHAuY29ubmVjdGVkKSB7XG4gICAgICBvbkRpc2Nvbm5lY3QocClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJDb25uZWN0IGEgc3Vic2NyaXB0aW9uXCIgaGludD1cImVudGVyIHNpZ24gaW4gXHUwMEI3IGQgZGlzY29ubmVjdCBcdTAwQjcgZXNjIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtwcm92aWRlcnN9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2luZGV4KCl9XG4gICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9eyhwKSA9PiBvbkNvbm5lY3QocCl9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgcmVuZGVySXRlbT17KHAsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBwLmNvbm5lY3RlZCA/IGFjY2VudCgpIDogTVVURUQgfX0+e3AuY29ubmVjdGVkID8gJ1x1MjVBQScgOiAnXHUyNUFCJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgICR7cC5sYWJlbH0gIGB9PC90ZXh0PlxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBNVVRFRCB9fT5cbiAgICAgICAgICAgICAgICAgIHtwLmNvbm5lY3RlZCA/IGBjb25uZWN0ZWQke3AuZW1haWwgPyBgIGFzICR7cC5lbWFpbH1gIDogJyd9YCA6ICdub3QgY29ubmVjdGVkJ31cbiAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gV2FrZXVwc1BhbmVsKHsgd2FrZXVwcywgZm9jdXNlZCwgb25DYW5jZWwsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbdGljaywgc2V0VGlja10gPSBjcmVhdGVTaWduYWwoMClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG4gIHVzZUludGVydmFsKCgpID0+IHNldFRpY2soKHQpID0+IHQgKyAxKSwgMTAwMClcbiAgdm9pZCB0aWNrKClcblxuICBjb25zdCBzZWxlY3RlZCA9ICgpID0+IHdha2V1cHNbTWF0aC5taW4oaW5kZXgoKSwgd2FrZXVwcy5sZW5ndGggLSAxKV0gfHwgbnVsbFxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgY29uc3QgdyA9IHNlbGVjdGVkKClcbiAgICBpZiAodyAmJiBldmVudC5rZXkgPT09ICdrJyAmJiAhZXZlbnQuY3RybCkge1xuICAgICAgb25DYW5jZWwodylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGNvdW50ZG93biA9IChhdCkgPT4ge1xuICAgIGNvbnN0IHNlY3MgPSBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKChhdCAtIERhdGUubm93KCkpIC8gMTAwMCkpXG4gICAgaWYgKHNlY3MgPCA2MCkgcmV0dXJuIGBpbiAke3NlY3N9c2BcbiAgICBjb25zdCBtaW5zID0gTWF0aC5mbG9vcihzZWNzIC8gNjApXG4gICAgaWYgKG1pbnMgPCA2MCkgcmV0dXJuIGBpbiAke21pbnN9bSAke3NlY3MgJSA2MH1zYFxuICAgIHJldHVybiBgaW4gJHtNYXRoLmZsb29yKG1pbnMgLyA2MCl9aCAke21pbnMgJSA2MH1tYFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlNjaGVkdWxlZCB3YWtlLXVwc1wiIGhpbnQ9XCJlbnRlciBvciBrIGNhbmNlbCBcdTAwQjcgZXNjIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHt3YWtldXBzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gcGVuZGluZyB3YWtlLXVwcyBcdTAwQjcgdGhlIGFnZW50IHNjaGVkdWxlcyB0aGVtIHdpdGggc2NoZWR1bGVfd2FrZXVwPC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17d2FrZXVwc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgb25TdWJtaXQ9eyh3KSA9PiBvbkNhbmNlbCh3KX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KHcsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgXHUyM0YwICR7dy5pZH1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57Y291bnRkb3duKHcuYXQpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgJHtuZXcgRGF0ZSh3LmF0KS50b0xvY2FsZVRpbWVTdHJpbmcoKX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEsIGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnICAgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGR19TT0ZUIH19Pnt3Lm5vdGUucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5jb25zdCBNQ1BfU1RBVFVTID0ge1xuICBjb25uZWN0ZWQ6IHsgaWNvbjogJ1x1MjVBQScsIGNvbG9yOiBhY2NlbnQoKSB9LFxuICBjb25uZWN0aW5nOiB7IGljb246ICdcdTI1Q0MnLCBjb2xvcjogJyNmYmJmMjQnIH0sXG4gIGVycm9yOiB7IGljb246ICdcdTI3MTcnLCBjb2xvcjogUkVEIH0sXG4gIGRpc2FibGVkOiB7IGljb246ICdcdTI1QUInLCBjb2xvcjogRkFJTlQgfSxcbiAgaWRsZTogeyBpY29uOiAnXHUyNUFCJywgY29sb3I6IE1VVEVEIH0sXG59XG5cbmZ1bmN0aW9uIEZvcm1GaWVsZCh7IGxhYmVsLCBhY3RpdmUsIGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkFJTlQgfX0+e2xhYmVsfTwvdGV4dD5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gTWNwQWRkRm9ybSh7IGZvY3VzZWQsIG9uQWRkLCBvbkludmFsaWQsIG9uQ2FuY2VsIH0pIHtcbiAgY29uc3QgW25hbWUsIHNldE5hbWVdID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBbc2NvcGUsIHNldFNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgnZ2xvYmFsJylcbiAgY29uc3QgW3RyYW5zcG9ydCwgc2V0VHJhbnNwb3J0XSA9IGNyZWF0ZVNpZ25hbCgnc3RkaW8nKVxuICBjb25zdCBbdGFyZ2V0LCBzZXRUYXJnZXRdID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBbaGVhZGVycywgc2V0SGVhZGVyc10gPSBjcmVhdGVTaWduYWwoJycpXG5cbiAgY29uc3QgZm0gPSB1c2VGb2N1cyh7IGluaXRpYWw6ICduYW1lJyB9KVxuICBmbS5pdGVtKCduYW1lJylcbiAgZm0uaXRlbSgnc2NvcGUnKVxuICBmbS5pdGVtKCd0cmFuc3BvcnQnKVxuICBmbS5pdGVtKCd0YXJnZXQnKVxuICBpZiAodHJhbnNwb3J0KCkgPT09ICdodHRwJykgZm0uaXRlbSgnaGVhZGVycycpXG4gIGZtLml0ZW0oJ2FkZCcpXG4gIGZtLml0ZW0oJ2NhbmNlbCcpXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgb25DYW5jZWwoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgaHR0cCA9IHRyYW5zcG9ydCgpID09PSAnaHR0cCdcblxuICBjb25zdCBzdWJtaXQgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2VydmVyTmFtZSA9IG5hbWUoKS50cmltKClcbiAgICBjb25zdCB2YWx1ZSA9IHRhcmdldCgpLnRyaW0oKVxuICAgIGlmICghc2VydmVyTmFtZSB8fCAvXFxzLy50ZXN0KHNlcnZlck5hbWUpKSByZXR1cm4gb25JbnZhbGlkKCduYW1lIGlzIHJlcXVpcmVkIGFuZCBjYW5ub3QgY29udGFpbiBzcGFjZXMnKVxuICAgIGlmICghdmFsdWUpIHJldHVybiBvbkludmFsaWQoaHR0cCA/ICd1cmwgaXMgcmVxdWlyZWQnIDogJ2NvbW1hbmQgaXMgcmVxdWlyZWQnKVxuICAgIGlmIChodHRwICYmICEvXmh0dHBzPzpcXC9cXC8vLnRlc3QodmFsdWUpKSByZXR1cm4gb25JbnZhbGlkKCd1cmwgbXVzdCBzdGFydCB3aXRoIGh0dHA6Ly8gb3IgaHR0cHM6Ly8nKVxuICAgIGlmICghaHR0cCAmJiAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodmFsdWUpKSByZXR1cm4gb25JbnZhbGlkKCdhIHN0ZGlvIGNvbW1hbmQgY2Fubm90IHN0YXJ0IHdpdGggYSB1cmw7IHBpY2sgdGhlIGh0dHAgdHJhbnNwb3J0JylcbiAgICBjb25zdCBleHRyYSA9IGhlYWRlcnMoKS50cmltKClcbiAgICBvbkFkZChzZXJ2ZXJOYW1lLCBodHRwICYmIGV4dHJhID8gYCR7dmFsdWV9ICR7ZXh0cmF9YCA6IHZhbHVlLCBzY29wZSgpKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwibmFtZVwiIGFjdGl2ZT17Zm0uaXMoJ25hbWUnKX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICA8VGV4dElucHV0IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ25hbWUnKX0gcGxhY2Vob2xkZXI9XCJsaW5lYXJcIiBvbkNoYW5nZT17c2V0TmFtZX0gLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCJzY29wZVwiIGFjdGl2ZT17Zm0uaXMoJ3Njb3BlJyl9PlxuICAgICAgICA8UmFkaW8gb3B0aW9ucz17WydnbG9iYWwnLCAncHJvamVjdCddfSBzZWxlY3RlZD17c2NvcGUoKX0gb25DaGFuZ2U9e3NldFNjb3BlfSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdzY29wZScpfSAvPlxuICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwidHJhbnNwb3J0XCIgYWN0aXZlPXtmbS5pcygndHJhbnNwb3J0Jyl9PlxuICAgICAgICA8UmFkaW8gb3B0aW9ucz17WydzdGRpbycsICdodHRwJ119IHNlbGVjdGVkPXt0cmFuc3BvcnQoKX0gb25DaGFuZ2U9e3NldFRyYW5zcG9ydH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygndHJhbnNwb3J0Jyl9IC8+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIDxGb3JtRmllbGQgbGFiZWw9e2h0dHAgPyAndXJsJyA6ICdjb21tYW5kJ30gYWN0aXZlPXtmbS5pcygndGFyZ2V0Jyl9PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgPFRleHRJbnB1dFxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygndGFyZ2V0Jyl9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aHR0cCA/ICdodHRwczovL21jcC5saW5lYXIuYXBwL21jcCcgOiAnbnB4IC15IEBtb2RlbGNvbnRleHRwcm90b2NvbC9zZXJ2ZXItZmlsZXN5c3RlbSAvdG1wJ31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRUYXJnZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIHtodHRwICYmIChcbiAgICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cImhlYWRlcnMgXHUwMEI3IG9wdGlvbmFsXCIgYWN0aXZlPXtmbS5pcygnaGVhZGVycycpfT5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICA8VGV4dElucHV0IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ2hlYWRlcnMnKX0gcGxhY2Vob2xkZXI9J0F1dGhvcml6YXRpb249XCJCZWFyZXIgLi4uXCIgWC1UZWFtPVwiY29yZVwiJyBvbkNoYW5nZT17c2V0SGVhZGVyc30gLz5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICApfVxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPEJ1dHRvbiBsYWJlbD1cImFkZFwiIG9uUHJlc3M9e3N1Ym1pdH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnYWRkJyl9IC8+XG4gICAgICAgIDx0ZXh0PiAgPC90ZXh0PlxuICAgICAgICA8QnV0dG9uIGxhYmVsPVwiY2FuY2VsXCIgb25QcmVzcz17b25DYW5jZWx9IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ2NhbmNlbCcpfSB2YXJpYW50PVwiZGltXCIgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNY3BQYW5lbCh7IHNlcnZlcnMsIGZvY3VzZWQsIG9uVG9nZ2xlLCBvblJlY29ubmVjdCwgb25SZW1vdmUsIG9uQWRkLCBvbkludmFsaWQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbYWRkaW5nLCBzZXRBZGRpbmddID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbdmlld2luZywgc2V0Vmlld2luZ10gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQgJiYgIWFkZGluZygpLCAoKSA9PiAodmlld2luZygpID8gc2V0Vmlld2luZyhudWxsKSA6IG9uQ2xvc2UoKSkpXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiBzZXJ2ZXJzW01hdGgubWluKGluZGV4KCksIHNlcnZlcnMubGVuZ3RoIC0gMSldIHx8IG51bGxcbiAgY29uc3Qgdmlld2VkID0gKCkgPT4gc2VydmVycy5maW5kKChzKSA9PiBzLm5hbWUgPT09IHZpZXdpbmcoKSkgfHwgbnVsbFxuXG4gIGlmICh2aWV3aW5nKCkgJiYgdmlld2VkKCkpIHtcbiAgICBjb25zdCBzZXJ2ZXIgPSB2aWV3ZWQoKVxuICAgIGNvbnN0IGRlc2NyaWJlID0gKHQpID0+IHQuZGVzY3JpcHRpb24ucmVwbGFjZSgvXlxcW1teXFxdXSpcXF1cXHMqLywgJycpLnRyaW0oKSB8fCAnbm8gZGVzY3JpcHRpb24nXG4gICAgcmV0dXJuIChcbiAgICAgIDxQYW5lbEZyYW1lXG4gICAgICAgIHRpdGxlPXtgTUNQIHNlcnZlcnMgXHUwMEI3ICR7c2VydmVyLm5hbWV9IFx1MDBCNyAke3NlcnZlci50b29scy5sZW5ndGh9ICR7c2VydmVyLnRvb2xzLmxlbmd0aCA9PT0gMSA/ICd0b29sJyA6ICd0b29scyd9YH1cbiAgICAgICAgaGludD1cImovayBvciBcdTIxOTFcdTIxOTMgdG8gc2Nyb2xsIFx1MDBCNyBlc2MgYmFjayB0byBzZXJ2ZXJzXCJcbiAgICAgID5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAxNCwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHtzZXJ2ZXIudG9vbHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHRvb2xzIHJlcG9ydGVkIFx1MDBCNyBpcyB0aGUgc2VydmVyIGNvbm5lY3RlZD88L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZH0gc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICB7c2VydmVyLnRvb2xzLm1hcCgodCwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3gga2V5PXt0Lm5hbWV9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IGkgPT09IDAgPyAwIDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57dC5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57ZGVzY3JpYmUodCl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9QYW5lbEZyYW1lPlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWVcbiAgICAgIHRpdGxlPVwiTUNQIHNlcnZlcnNcIlxuICAgICAgaGludD17YWRkaW5nKClcbiAgICAgICAgPyAndGFiIG1vdmVzIGJldHdlZW4gZmllbGRzIFx1MDBCNyBqL2sgKyBzcGFjZSBwaWNrcyBhIHJhZGlvIG9wdGlvbiBcdTAwQjcgZXNjIGNhbmNlbHMnXG4gICAgICAgIDogJ3NwYWNlL2VudGVyIHRvZ2dsZSBcdTAwQjcgdCB0b29scyBcdTAwQjcgciByZWNvbm5lY3QgXHUwMEI3IGEgYWRkIFx1MDBCNyBkIHJlbW92ZSBcdTAwQjcgZXNjIGNsb3NlJ31cbiAgICA+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHthZGRpbmcoKSA/IChcbiAgICAgICAgICA8TWNwQWRkRm9ybVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG9uQWRkPXsobmFtZSwgc3BlYywgc2NvcGUpID0+IHtcbiAgICAgICAgICAgICAgb25BZGQobmFtZSwgc3BlYywgc2NvcGUpXG4gICAgICAgICAgICAgIHNldEFkZGluZyhmYWxzZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkludmFsaWQ9e29uSW52YWxpZH1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiBzZXRBZGRpbmcoZmFsc2UpfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiBzZXJ2ZXJzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gTUNQIHNlcnZlcnMgY29uZmlndXJlZCBcdTAwQjcgcHJlc3MgYSB0byBhZGQgb25lPC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17c2VydmVyc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezZ9XG4gICAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgICBvblN1Ym1pdD17KHMpID0+IG9uVG9nZ2xlKHMubmFtZSl9XG4gICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhzLCB7IGFjdGl2ZSB9KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0ID0gTUNQX1NUQVRVU1tzLnN0YXR1c10gfHwgTUNQX1NUQVRVUy5pZGxlXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc3QuY29sb3IgfX0+e3N0Lmljb259PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2AgJHtzLm5hbWUucGFkRW5kKDE0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIHtzLnNjb3BlID09PSAncHJvamVjdCcgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnXHUwMEI3cCAnfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogcy5zdGF0dXMgPT09ICdlcnJvcicgPyBSRUQgOiBNVVRFRCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICB7cy5zdGF0dXMgPT09ICdlcnJvcicgPyBzLmVycm9yIDogcy5zdGF0dXMgPT09ICdjb25uZWN0ZWQnID8gYCR7cy50b29sQ291bnR9IHRvb2xzYCA6IHMuc3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2AgICR7cy5jb21tYW5kLnNsaWNlKDAsIDQwKX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgICB7IWFkZGluZygpICYmIChcbiAgICAgICAgPE1jcEtleXNcbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIG9uS2V5PXsoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzID0gc2VsZWN0ZWQoKVxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2EnKSBzZXRBZGRpbmcodHJ1ZSlcbiAgICAgICAgICAgIGVsc2UgaWYgKHMgJiYga2V5ID09PSAnICcpIG9uVG9nZ2xlKHMubmFtZSlcbiAgICAgICAgICAgIGVsc2UgaWYgKHMgJiYga2V5ID09PSAncicpIG9uUmVjb25uZWN0KHMubmFtZSlcbiAgICAgICAgICAgIGVsc2UgaWYgKHMgJiYga2V5ID09PSAnZCcpIG9uUmVtb3ZlKHMubmFtZSlcbiAgICAgICAgICAgIGVsc2UgaWYgKHMgJiYga2V5ID09PSAndCcpIHNldFZpZXdpbmcocy5uYW1lKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5mdW5jdGlvbiBNY3BLZXlzKHsgZm9jdXNlZCwgb25LZXkgfSkge1xuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChbJyAnLCAnYScsICdyJywgJ2QnLCAndCddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgIG9uS2V5KGV2ZW50LmtleSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuICByZXR1cm4gbnVsbFxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLGVBQWU7QUFTakIsU0FBUyxhQUFhLE1BQU0sUUFBUSxLQUFLO0FBQzlDLFFBQU1BLFFBQU8sQ0FBQztBQUNkLGFBQVcsS0FBSyxXQUFXO0FBQ3pCLFVBQU0sT0FBTyxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDckMsUUFBSSxLQUFNLENBQUFBLE1BQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJO0FBQUEsRUFDakM7QUFDQSxTQUFPQTtBQUNUO0FBRU8sU0FBUyxVQUFVQSxPQUFNO0FBQzlCLFVBQVFBLEtBQUk7QUFDWixTQUFPLE9BQU8sS0FBS0EsS0FBSTtBQUN6QjtBQUVPLFNBQVMsUUFBUSxZQUFZO0FBQ2xDLFNBQU8sVUFBVSxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxZQUFZLENBQUM7QUFDMUY7QUF6QkEsSUFFTTtBQUZOO0FBQUE7QUFFQSxJQUFNLFlBQVk7QUFBQSxNQUNoQixFQUFFLElBQUksVUFBVSxPQUFPLFVBQVUsS0FBSyxDQUFDLGtCQUFrQixtQkFBbUIsRUFBRTtBQUFBLE1BQzlFLEVBQUUsSUFBSSxhQUFhLE9BQU8sVUFBVSxLQUFLLENBQUMsbUJBQW1CLEVBQUU7QUFBQSxNQUMvRCxFQUFFLElBQUksVUFBVSxPQUFPLFVBQVUsS0FBSyxDQUFDLGdCQUFnQixFQUFFO0FBQUEsTUFDekQsRUFBRSxJQUFJLE9BQU8sT0FBTyxRQUFRLEtBQUssQ0FBQyxhQUFhLEVBQUU7QUFBQSxJQUNuRDtBQUFBO0FBQUE7OztBQ1BPLFNBQVMsVUFBVUMsU0FBUSxNQUFNO0FBQ3RDLFNBQU9BLFFBQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUksS0FBSztBQUNoRDtBQUVPLFNBQVMsYUFBYUEsU0FBUTtBQUNuQyxTQUFPQSxRQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsY0FBYyxLQUFLLEtBQUs7QUFDdEQ7QUFFTyxTQUFTLGFBQWFDLFFBQU8sT0FBTztBQUN6QyxNQUFJLENBQUNBLFFBQU8sU0FBUyxDQUFDLE1BQU8sUUFBTztBQUNwQyxRQUFNLFVBQVUsTUFBTSxnQkFBZ0IsS0FBS0EsT0FBTSxNQUFNO0FBQ3ZELFFBQU0sV0FBVyxNQUFNLG9CQUFvQixLQUFLQSxPQUFNLE1BQU07QUFDNUQsVUFBUSxTQUFTLFdBQVc7QUFDOUI7QUFiQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUEsU0FBUyxZQUFZLGlCQUFpQjtBQUN0QyxTQUFTLGVBQWU7QUFDeEIsU0FBUyxTQUFTLE1BQU0sZUFBZTtBQUVoQyxTQUFTLFdBQVc7QUFDekIsU0FBTyxRQUFRLElBQUksYUFBYSxLQUFLLFFBQVEsR0FBRyxPQUFPO0FBQ3pEO0FBRU8sU0FBUyxXQUFXLE1BQU07QUFDL0IsU0FBTyxRQUFRLElBQUksRUFBRSxRQUFRLFdBQVcsR0FBRztBQUM3QztBQUVPLFNBQVMsZ0JBQWdCLEtBQUs7QUFDbkMsTUFBSSxNQUFNLFFBQVEsR0FBRztBQUNyQixRQUFNLE9BQU8sUUFBUTtBQUNyQixTQUFPLE1BQU07QUFDWCxRQUFJLFdBQVcsS0FBSyxLQUFLLE1BQU0sQ0FBQyxFQUFHLFFBQU87QUFDMUMsVUFBTSxTQUFTLFFBQVEsR0FBRztBQUMxQixRQUFJLFdBQVcsT0FBTyxRQUFRLEtBQU0sUUFBTyxRQUFRLEdBQUc7QUFDdEQsVUFBTTtBQUFBLEVBQ1I7QUFDRjtBQUVPLFNBQVMsV0FBVyxNQUFNO0FBQy9CLFNBQU8sS0FBSyxTQUFTLEdBQUcsWUFBWSxXQUFXLElBQUksQ0FBQztBQUN0RDtBQUVPLFNBQVMsWUFBWSxNQUFNO0FBQ2hDLFNBQU8sS0FBSyxXQUFXLElBQUksR0FBRyxVQUFVO0FBQzFDO0FBRU8sU0FBUyxtQkFBbUIsTUFBTTtBQUN2QyxTQUFPLEtBQUssV0FBVyxJQUFJLEdBQUcsZUFBZTtBQUMvQztBQUVPLFNBQVMsZUFBZSxNQUFNO0FBQ25DLFNBQU8sS0FBSyxXQUFXLElBQUksR0FBRyxVQUFVO0FBQzFDO0FBRU8sU0FBUyxnQkFBZ0I7QUFDOUIsU0FBTyxLQUFLLFNBQVMsR0FBRyxVQUFVO0FBQ3BDO0FBRU8sU0FBUyxrQkFBa0I7QUFDaEMsU0FBTyxLQUFLLFNBQVMsR0FBRyxRQUFRO0FBQ2xDO0FBRU8sU0FBUyxpQkFBaUIsTUFBTTtBQUNyQyxTQUFPLEtBQUssTUFBTSxTQUFTLFFBQVE7QUFDckM7QUFFTyxTQUFTLG1CQUFtQjtBQUNqQyxTQUFPLEtBQUssU0FBUyxHQUFHLFdBQVc7QUFDckM7QUFFTyxTQUFTLFVBQVUsS0FBSztBQUM3QixZQUFVLEtBQUssRUFBRSxXQUFXLEtBQUssQ0FBQztBQUNsQyxTQUFPO0FBQ1Q7QUExREE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBO0FBQUE7QUFBQTtBQUFBLGlDQUFDLFFBQVMsRUFBQyxRQUFTLEVBQUMseUJBQXdCLEVBQUMsSUFBSyx5QkFBd0IsTUFBTyx5QkFBd0IsYUFBYywyRUFBMEUsUUFBUyxxQkFBb0IsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsV0FBVSxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxLQUFJLFlBQWEsT0FBTSxhQUFjLElBQUcsRUFBQyxHQUFFLGdDQUErQixFQUFDLElBQUssZ0NBQStCLE1BQU8sZ0NBQStCLGFBQWMsaUZBQWdGLFFBQVMsZ0JBQWUsWUFBYSxPQUFNLFdBQVksT0FBTSxXQUFZLE9BQU0sYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsTUFBTSxHQUFFLFFBQVMsQ0FBQyxPQUFPLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsTUFBSyxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxFQUFDLEdBQUUsa0JBQWlCLEVBQUMsSUFBSyxrQkFBaUIsTUFBTyxrQkFBaUIsYUFBYyw2RUFBNEUsUUFBUyxjQUFhLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksS0FBTSxNQUFLLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsT0FBTSxPQUFRLENBQUMsRUFBQyxPQUFRLEtBQUksUUFBUyxJQUFHLFlBQWEsTUFBSyxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sSUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLEtBQUksUUFBUyxJQUFHLFlBQWEsS0FBSSxFQUFDLEVBQUMsR0FBRSxvQkFBbUIsRUFBQyxJQUFLLG9CQUFtQixNQUFPLG9CQUFtQixhQUFjLDRFQUEyRSxRQUFTLGdCQUFlLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFNBQVEsR0FBRSxFQUFDLE1BQU8saUJBQWdCLEtBQU0sR0FBRSxLQUFNLE1BQUssQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEtBQUksWUFBYSxNQUFLLGFBQWMsRUFBQyxFQUFDLEdBQUUsb0JBQW1CLEVBQUMsSUFBSyxvQkFBbUIsTUFBTyxvQkFBbUIsYUFBYyx3RUFBdUUsUUFBUyxnQkFBZSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxXQUFVLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEdBQUUsWUFBYSxNQUFLLGFBQWMsSUFBRyxFQUFDLEdBQUUsa0JBQWlCLEVBQUMsSUFBSyxrQkFBaUIsTUFBTyxrQkFBaUIsYUFBYyw4RUFBNkUsUUFBUyxTQUFRLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFNBQVEsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE1BQUssT0FBUSxFQUFDLFNBQVUsUUFBTyxRQUFTLE1BQUssRUFBQyxHQUFFLG9CQUFtQixFQUFDLElBQUssb0JBQW1CLE1BQU8sb0JBQW1CLGFBQWMsOEVBQTZFLFFBQVMsZ0JBQWUsWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsS0FBSSxHQUFFLFFBQVMsY0FBYSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsS0FBSSxZQUFhLE1BQUssRUFBQyxHQUFFLHdCQUF1QixFQUFDLElBQUssd0JBQXVCLE1BQU8sd0JBQXVCLGFBQWMscUZBQW9GLFFBQVMsVUFBUyxZQUFhLE9BQU0sV0FBWSxPQUFNLFdBQVksT0FBTSxhQUFjLE9BQU0sV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxNQUFNLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxNQUFLLFFBQVMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxFQUFDLEVBQUMsR0FBRSxzQ0FBcUMsRUFBQyxJQUFLLHNDQUFxQyxNQUFPLHVDQUFzQyxhQUFjLGdGQUErRSxRQUFTLGNBQWEsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksT0FBUSxDQUFDLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLElBQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLElBQUcsRUFBQyxFQUFDLEdBQUUsNEJBQTJCLEVBQUMsSUFBSyw0QkFBMkIsTUFBTyw0QkFBMkIsYUFBYywyRUFBMEUsUUFBUyxxQkFBb0IsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sU0FBUSxHQUFFLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLEtBQU0sTUFBSyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsS0FBSSxZQUFhLE1BQUssRUFBQyxHQUFFLDhCQUE2QixFQUFDLElBQUssOEJBQTZCLE1BQU8sbUJBQWtCLGFBQWMsK0VBQThFLFFBQVMsY0FBYSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEdBQUUsV0FBWSxPQUFNLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxRQUFPLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxRQUFPLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLEVBQUMsR0FBRSwwQkFBeUIsRUFBQyxJQUFLLDBCQUF5QixNQUFPLGVBQWMsYUFBYyx1RkFBc0YsUUFBUyxnQkFBZSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEdBQUUsV0FBWSxPQUFNLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxRQUFPLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFNLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUseUJBQXdCLEVBQUMsSUFBSyx5QkFBd0IsTUFBTyx5QkFBd0IsYUFBYyxzRUFBcUUsUUFBUyxxQkFBb0IsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sU0FBUSxHQUFFLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLEtBQU0sTUFBSyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsS0FBSSxZQUFhLE1BQUssYUFBYyxJQUFHLEVBQUMsR0FBRSw2QkFBNEIsRUFBQyxJQUFLLDZCQUE0QixNQUFPLDZCQUE0QixhQUFjLGtHQUFpRyxRQUFTLFVBQVMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxHQUFFLFdBQVksT0FBTSxhQUFjLE1BQUssY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxPQUFPLEdBQUUsUUFBUyxDQUFDLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxRQUFPLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxLQUFJLEVBQUMsR0FBRSxrQ0FBaUMsRUFBQyxJQUFLLGtDQUFpQyxNQUFPLGlCQUFnQixhQUFjLGtGQUFpRixRQUFTLGdCQUFlLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFdBQVUsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE9BQU0sYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsUUFBTyxPQUFPLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBTSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxFQUFDLEdBQUUsMEJBQXlCLEVBQUMsSUFBSywwQkFBeUIsTUFBTywwQkFBeUIsYUFBYyxpRkFBZ0YsUUFBUyxjQUFhLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLE9BQVEsQ0FBQyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxJQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxJQUFHLEVBQUMsRUFBQyxHQUFFLHNCQUFxQixFQUFDLElBQUssc0JBQXFCLE1BQU8sc0JBQXFCLGFBQWMsK0VBQThFLFFBQVMsU0FBUSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxTQUFRLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxNQUFLLE9BQVEsRUFBQyxTQUFVLFFBQU8sUUFBUyxNQUFLLEVBQUMsR0FBRSx3QkFBdUIsRUFBQyxJQUFLLHdCQUF1QixNQUFPLHdCQUF1QixhQUFjLHNGQUFxRixRQUFTLGNBQWEsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsUUFBUyxjQUFhLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxPQUFRLENBQUMsRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sSUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsSUFBRyxFQUFDLEVBQUMsR0FBRSwwQkFBeUIsRUFBQyxJQUFLLDBCQUF5QixNQUFPLDBCQUF5QixhQUFjLHNGQUFxRixRQUFTLGdCQUFlLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFdBQVUsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLE1BQUssYUFBYyxFQUFDLEVBQUMsR0FBRSw4QkFBNkIsRUFBQyxJQUFLLDhCQUE2QixNQUFPLDhCQUE2QixhQUFjLGlGQUFnRixRQUFTLGdCQUFlLFlBQWEsT0FBTSxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRSxRQUFTLENBQUMsT0FBTyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE1BQUssUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLEdBQUUsRUFBQyxHQUFFLHVCQUFzQixFQUFDLElBQUssdUJBQXNCLE1BQU8sdUJBQXNCLGFBQWMsd0VBQXVFLFFBQVMsZ0JBQWUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sU0FBUSxHQUFFLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxHQUFFLEtBQU0sTUFBSyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsS0FBSSxZQUFhLE9BQU0sYUFBYyxFQUFDLEVBQUMsR0FBRSxpQ0FBZ0MsRUFBQyxJQUFLLGlDQUFnQyxNQUFPLGlDQUFnQyxhQUFjLG1FQUFrRSxRQUFTLHFCQUFvQixZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxXQUFVLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsUUFBUyxjQUFhLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxLQUFJLFlBQWEsT0FBTSxhQUFjLElBQUcsRUFBQyxHQUFFLHlCQUF3QixFQUFDLElBQUsseUJBQXdCLE1BQU8seUJBQXdCLGFBQWMsbUVBQWtFLFFBQVMscUJBQW9CLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLEtBQUksR0FBRSxRQUFTLGNBQWEsTUFBTyxFQUFDLE9BQVEsT0FBTSxRQUFTLElBQUcsRUFBQyxFQUFDLEVBQUMsR0FBRSxXQUFZLEVBQUMsUUFBUyxFQUFDLG1CQUFrQixFQUFDLElBQUssbUJBQWtCLE1BQU8sNEJBQTJCLGFBQWMsNkVBQTRFLFFBQVMsZUFBYyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLEdBQUUsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLEtBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsR0FBRSw2QkFBNEIsRUFBQyxJQUFLLDZCQUE0QixNQUFPLG9CQUFtQixhQUFjLHVGQUFzRixRQUFTLGdCQUFlLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLEtBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsR0FBRSxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsR0FBRSw0QkFBMkIsRUFBQyxJQUFLLDRCQUEyQixNQUFPLG1CQUFrQixhQUFjLDZFQUE0RSxRQUFTLGVBQWMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8saUJBQWdCLEtBQU0sS0FBSSxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLFFBQVMsS0FBSyxHQUFFLFFBQVMsY0FBYSxNQUFPLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxNQUFLLEVBQUMsR0FBRSxxQkFBb0IsRUFBQyxJQUFLLHFCQUFvQixNQUFPLDhCQUE2QixhQUFjLGlGQUFnRixRQUFTLGlCQUFnQixZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQVEsUUFBUyxLQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsS0FBSSxFQUFDLEdBQUUsbUJBQWtCLEVBQUMsSUFBSyxtQkFBa0IsTUFBTyxtQkFBa0IsYUFBYywyRUFBMEUsUUFBUyxlQUFjLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxRQUFPLFNBQVEsS0FBSyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQVEsUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLEtBQUksWUFBYSxHQUFFLGFBQWMsS0FBSSxHQUFFLFVBQVcsRUFBQyxNQUFPLEVBQUMsT0FBUSxPQUFNLEdBQUUsU0FBVSxFQUFDLGtCQUFpQix1QkFBc0IsRUFBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLEtBQUksRUFBQyxHQUFFLG1CQUFrQixFQUFDLElBQUssbUJBQWtCLE1BQU8sbUJBQWtCLGFBQWMsZ0ZBQStFLFFBQVMsaUJBQWdCLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFNBQVEsR0FBRSxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLFFBQU8sU0FBUSxLQUFLLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxJQUFHLEVBQUMsR0FBRSw0QkFBMkIsRUFBQyxJQUFLLDRCQUEyQixNQUFPLG1CQUFrQixhQUFjLDZFQUE0RSxRQUFTLGVBQWMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxHQUFFLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxLQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsS0FBSSxFQUFDLEdBQUUsbUJBQWtCLEVBQUMsSUFBSyxtQkFBa0IsTUFBTyxtQkFBa0IsYUFBYyxtRkFBa0YsUUFBUyxlQUFjLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxRQUFPLFNBQVEsS0FBSyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQVEsUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxHQUFFLGFBQWMsS0FBSSxHQUFFLFVBQVcsRUFBQyxNQUFPLEVBQUMsT0FBUSxPQUFNLEdBQUUsU0FBVSxFQUFDLGtCQUFpQix1QkFBc0IsRUFBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLEtBQUksRUFBQyxHQUFFLG1CQUFrQixFQUFDLElBQUssbUJBQWtCLE1BQU8sNEJBQTJCLGFBQWMsNkVBQTRFLFFBQVMsZUFBYyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxLQUFLLEdBQUUsUUFBUyxjQUFhLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLE1BQUssRUFBQyxHQUFFLGtCQUFpQixFQUFDLElBQUssa0JBQWlCLE1BQU8sa0JBQWlCLGFBQWMsK0VBQThFLFFBQVMsZ0JBQWUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLFFBQU8sU0FBUSxLQUFLLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFRLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsR0FBRSxhQUFjLEtBQUksRUFBQyxHQUFFLG9CQUFtQixFQUFDLElBQUssb0JBQW1CLE1BQU8sNkJBQTRCLGFBQWMsOEVBQTZFLFFBQVMsZ0JBQWUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8saUJBQWdCLEtBQU0sS0FBSSxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLFFBQVMsS0FBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxHQUFFLFlBQWEsS0FBSSxhQUFjLEtBQUksRUFBQyxHQUFFLG1CQUFrQixFQUFDLElBQUssbUJBQWtCLE1BQU8sbUJBQWtCLGFBQWMsK0VBQThFLFFBQVMsZUFBYyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsUUFBTyxLQUFLLEVBQUMsR0FBRSxFQUFDLE1BQU8saUJBQWdCLEtBQU0sS0FBSSxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFRLFFBQVMsTUFBTSxHQUFFLGNBQWUsRUFBQyxPQUFRLEVBQUMsTUFBTyxFQUFDLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxLQUFJLFlBQWEsR0FBRSxhQUFjLEtBQUksR0FBRSxVQUFXLEVBQUMsTUFBTyxFQUFDLE9BQVEsT0FBTSxHQUFFLFNBQVUsRUFBQyxrQkFBaUIsdUJBQXNCLEVBQUMsRUFBQyxFQUFDLEVBQUMsR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsR0FBRSw4QkFBNkIsRUFBQyxJQUFLLDhCQUE2QixNQUFPLHFCQUFvQixhQUFjLGlGQUFnRixRQUFTLGlCQUFnQixZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQVEsUUFBUyxLQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsS0FBSSxFQUFDLEdBQUUscUJBQW9CLEVBQUMsSUFBSyxxQkFBb0IsTUFBTyxxQkFBb0IsYUFBYyxxRkFBb0YsUUFBUyxpQkFBZ0IsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLFFBQU8sS0FBSyxFQUFDLEdBQUUsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsRUFBQyxFQUFDLEdBQUUsUUFBUyxFQUFDLFFBQVMsRUFBQyxJQUFLLEVBQUMsSUFBSyxNQUFLLE1BQU8sTUFBSyxhQUFjLCtFQUE4RSxRQUFTLEtBQUksWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLFFBQVMsSUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxHQUFFLFlBQWEsSUFBRyxFQUFDLEdBQUUsMEJBQXlCLEVBQUMsSUFBSywwQkFBeUIsTUFBTywwQkFBeUIsYUFBYyxxRkFBb0YsUUFBUyxrQkFBaUIsWUFBYSxPQUFNLFdBQVksT0FBTSxXQUFZLE9BQU0sYUFBYyxPQUFNLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsTUFBTSxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsTUFBSyxRQUFTLEtBQUksR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsRUFBQyxFQUFDLEdBQUUsZUFBYyxFQUFDLElBQUssZUFBYyxNQUFPLGVBQWMsYUFBYyw4RUFBNkUsUUFBUyxXQUFVLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFVBQVMsUUFBTyxPQUFPLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsT0FBTSxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLEVBQUMsR0FBRSxXQUFVLEVBQUMsSUFBSyxXQUFVLE1BQU8sV0FBVSxhQUFjLHVGQUFzRixRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsUUFBTyxPQUFNLFVBQVMsUUFBTyxTQUFRLEtBQUssRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFRLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxjQUFlLEVBQUMsT0FBUSxFQUFDLE1BQU8sRUFBQyxNQUFPLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEdBQUUsYUFBYyxLQUFJLEdBQUUsVUFBVyxFQUFDLE1BQU8sRUFBQyxjQUFlLFdBQVUsRUFBQyxFQUFDLEdBQUUsS0FBTSxFQUFDLFVBQVcsRUFBQyxNQUFPLEVBQUMsV0FBWSxFQUFDLE1BQU8sTUFBSyxFQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxNQUFLLE9BQVEsQ0FBQyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxHQUFFLGFBQWMsTUFBSyxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sTUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsR0FBRSxhQUFjLEtBQUksRUFBQyxFQUFDLEdBQUUsU0FBUSxFQUFDLElBQUssU0FBUSxNQUFPLFNBQVEsYUFBYywrRUFBOEUsUUFBUyxPQUFNLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFdBQVUsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLElBQUcsWUFBYSxNQUFLLEVBQUMsR0FBRSxpQkFBZ0IsRUFBQyxJQUFLLGlCQUFnQixNQUFPLGlCQUFnQixhQUFjLDBFQUF5RSxRQUFTLE9BQU0sWUFBYSxPQUFNLFdBQVksT0FBTSxXQUFZLE9BQU0sbUJBQW9CLE9BQU0sYUFBYyxNQUFLLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsTUFBTSxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBTSxRQUFTLEtBQUksR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsS0FBSSxZQUFhLEVBQUMsRUFBQyxHQUFFLGFBQVksRUFBQyxJQUFLLGFBQVksTUFBTyxhQUFZLGFBQWMsK0VBQThFLFFBQVMsV0FBVSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLEVBQUMsR0FBRSxVQUFTLEVBQUMsSUFBSyxVQUFTLE1BQU8sVUFBUyxhQUFjLDhFQUE2RSxRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU8sUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLElBQUcsWUFBYSxLQUFJLEVBQUMsR0FBRSxTQUFRLEVBQUMsSUFBSyxTQUFRLE1BQU8sU0FBUSxhQUFjLDZFQUE0RSxRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE9BQU0sYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsTUFBTSxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsTUFBSyxRQUFTLEtBQUksR0FBRSxNQUFPLEVBQUMsT0FBUSxJQUFHLFFBQVMsR0FBRSxFQUFDLEdBQUUsV0FBVSxFQUFDLElBQUssV0FBVSxNQUFPLFdBQVUsYUFBYyxtRUFBa0UsUUFBUyxVQUFTLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxJQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEtBQUksWUFBYSxNQUFLLEVBQUMsR0FBRSxVQUFTLEVBQUMsSUFBSyxVQUFTLE1BQU8sVUFBUyxhQUFjLDZFQUE0RSxRQUFTLFNBQVEsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLElBQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxJQUFHLFFBQVMsR0FBRSxFQUFDLEdBQUUsd0JBQXVCLEVBQUMsSUFBSyx3QkFBdUIsTUFBTyx3QkFBdUIsYUFBYyxrRkFBaUYsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLFFBQU8sT0FBTyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEdBQUUsT0FBUSxHQUFFLFFBQVMsRUFBQyxFQUFDLEdBQUUscUJBQW9CLEVBQUMsSUFBSyxxQkFBb0IsTUFBTyx1QkFBc0IsYUFBYyw2RUFBNEUsUUFBUyxPQUFNLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBTyxRQUFTLEtBQUksR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsR0FBRSxFQUFDLEdBQUUsZ0JBQWUsRUFBQyxJQUFLLGdCQUFlLE1BQU8sZ0JBQWUsYUFBYyw2RUFBNEUsUUFBUyxZQUFXLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQU8sT0FBTSxVQUFTLFFBQU8sT0FBTyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsTUFBSyxZQUFhLEtBQUksRUFBQyxHQUFFLHFCQUFvQixFQUFDLElBQUsscUJBQW9CLE1BQU8sdUJBQXNCLGFBQWMsbUZBQWtGLFFBQVMsYUFBWSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEdBQUUsV0FBWSxPQUFNLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLElBQUcsWUFBYSxNQUFLLEVBQUMsR0FBRSxpQkFBZ0IsRUFBQyxJQUFLLGlCQUFnQixNQUFPLGlCQUFnQixhQUFjLDhFQUE2RSxRQUFTLGFBQVksWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLElBQUcsWUFBYSxNQUFLLEVBQUMsR0FBRSx1QkFBc0IsRUFBQyxJQUFLLHVCQUFzQixNQUFPLHVCQUFzQixhQUFjLHVGQUFzRixRQUFTLG1CQUFrQixZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxRQUFPLE9BQU8sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFPLE9BQVEsS0FBTyxRQUFTLEtBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsSUFBRyxZQUFhLE1BQUssRUFBQyxHQUFFLHFCQUFvQixFQUFDLElBQUsscUJBQW9CLE1BQU8scUJBQW9CLGFBQWMsdUZBQXNGLFFBQVMsYUFBWSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsUUFBTyxPQUFPLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUsdUJBQXNCLEVBQUMsSUFBSyx1QkFBc0IsTUFBTyx5QkFBd0IsYUFBYyxtRkFBa0YsUUFBUyxPQUFNLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBTyxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsSUFBRyxZQUFhLE1BQUssRUFBQyxHQUFFLHFCQUFvQixFQUFDLElBQUsscUJBQW9CLE1BQU8sdUJBQXNCLGFBQWMsNkVBQTRFLFFBQVMsT0FBTSxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU8sUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLElBQUcsWUFBYSxLQUFJLEVBQUMsR0FBRSwwQkFBeUIsRUFBQyxJQUFLLDBCQUF5QixNQUFPLDBCQUF5QixhQUFjLHFGQUFvRixRQUFTLGtCQUFpQixZQUFhLE9BQU0sV0FBWSxPQUFNLFdBQVksT0FBTSxhQUFjLE9BQU0sV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxNQUFNLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxNQUFLLFFBQVMsS0FBSSxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxFQUFDLEVBQUMsR0FBRSxXQUFVLEVBQUMsSUFBSyxXQUFVLE1BQU8sV0FBVSxhQUFjLDZFQUE0RSxRQUFTLFVBQVMsWUFBYSxPQUFNLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxJQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEtBQUksWUFBYSxLQUFJLEVBQUMsR0FBRSxXQUFVLEVBQUMsSUFBSyxXQUFVLE1BQU8sV0FBVSxhQUFjLHFGQUFvRixRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsUUFBTyxPQUFNLFVBQVMsUUFBTyxPQUFPLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUsaUJBQWdCLEVBQUMsSUFBSyxpQkFBZ0IsTUFBTyxpQkFBZ0IsYUFBYyx1RkFBc0YsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQU8sT0FBTSxVQUFTLFFBQU8sT0FBTyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUsMEJBQXlCLEVBQUMsSUFBSywwQkFBeUIsTUFBTywwQkFBeUIsYUFBYyxxRkFBb0YsUUFBUyxrQkFBaUIsWUFBYSxPQUFNLFdBQVksT0FBTSxXQUFZLE9BQU0sYUFBYyxPQUFNLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsTUFBTSxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsTUFBSyxRQUFTLEtBQUksR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsRUFBQyxFQUFDLEdBQUUsZ0JBQWUsRUFBQyxJQUFLLGdCQUFlLE1BQU8sZ0JBQWUsYUFBYyxnRUFBK0QsUUFBUyxZQUFXLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQU8sT0FBTSxVQUFTLFFBQU8sU0FBUSxLQUFLLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBUSxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsSUFBRyxHQUFFLFVBQVcsRUFBQyxNQUFPLEVBQUMsY0FBZSxXQUFVLEVBQUMsRUFBQyxHQUFFLEtBQU0sRUFBQyxVQUFXLEVBQUMsTUFBTyxFQUFDLFdBQVksRUFBQyxNQUFPLE1BQUssRUFBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLEdBQUUsWUFBYSxLQUFJLGFBQWMsTUFBSyxPQUFRLENBQUMsRUFBQyxPQUFRLEdBQUUsUUFBUyxHQUFFLFlBQWEsS0FBSSxhQUFjLEtBQUksTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLE1BQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxHQUFFLFFBQVMsR0FBRSxZQUFhLEtBQUksYUFBYyxJQUFHLEVBQUMsRUFBQyxHQUFFLHNCQUFxQixFQUFDLElBQUssc0JBQXFCLE1BQU8sc0JBQXFCLGFBQWMsdUZBQXNGLFFBQVMsYUFBWSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsR0FBRSxZQUFhLE1BQUssRUFBQyxHQUFFLGlCQUFnQixFQUFDLElBQUssaUJBQWdCLE1BQU8saUJBQWdCLGFBQWMsb0VBQW1FLFFBQVMsWUFBVyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxRQUFPLFNBQVEsS0FBSyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQVEsT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLGNBQWUsRUFBQyxPQUFRLEVBQUMsTUFBTyxFQUFDLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLEtBQUksR0FBRSxVQUFXLEVBQUMsTUFBTyxFQUFDLGNBQWUsV0FBVSxFQUFDLEVBQUMsR0FBRSxLQUFNLEVBQUMsVUFBVyxFQUFDLE1BQU8sRUFBQyxXQUFZLEVBQUMsTUFBTyxNQUFLLEVBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxJQUFHLFlBQWEsTUFBSyxhQUFjLE9BQU0sT0FBUSxDQUFDLEVBQUMsT0FBUSxHQUFFLFFBQVMsTUFBSyxZQUFhLEtBQUksYUFBYyxNQUFLLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxNQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsR0FBRSxRQUFTLE1BQUssWUFBYSxLQUFJLGFBQWMsS0FBSSxFQUFDLEVBQUMsR0FBRSx1QkFBc0IsRUFBQyxJQUFLLHVCQUFzQixNQUFPLGdCQUFlLGFBQWMsa0ZBQWlGLFFBQVMsYUFBWSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU8sUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLElBQUcsWUFBYSxNQUFLLEVBQUMsR0FBRSx1QkFBc0IsRUFBQyxJQUFLLHVCQUFzQixNQUFPLGdCQUFlLGFBQWMsbUZBQWtGLFFBQVMsYUFBWSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU8sUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLElBQUcsWUFBYSxNQUFLLEVBQUMsR0FBRSx5QkFBd0IsRUFBQyxJQUFLLHlCQUF3QixNQUFPLHlCQUF3QixhQUFjLG9GQUFtRixRQUFTLFVBQVMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsUUFBUSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssYUFBYyxPQUFNLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLFFBQVMsSUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxHQUFFLFlBQWEsSUFBRyxFQUFDLEdBQUUsaUJBQWdCLEVBQUMsSUFBSyxpQkFBZ0IsTUFBTyxpQkFBZ0IsYUFBYyxrRkFBaUYsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLFFBQU8sT0FBTyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEdBQUUsT0FBUSxHQUFFLFFBQVMsRUFBQyxFQUFDLEdBQUUsZ0JBQWUsRUFBQyxJQUFLLGdCQUFlLE1BQU8sZ0JBQWUsYUFBYywrRUFBOEUsUUFBUyxZQUFXLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsS0FBSSxZQUFhLE1BQUssRUFBQyxHQUFFLHFCQUFvQixFQUFDLElBQUsscUJBQW9CLE1BQU8sdUJBQXNCLGFBQWMsNkVBQTRFLFFBQVMsT0FBTSxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU8sUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLElBQUcsWUFBYSxLQUFJLEVBQUMsR0FBRSxJQUFLLEVBQUMsSUFBSyxNQUFLLE1BQU8sTUFBSyxhQUFjLDBFQUF5RSxRQUFTLEtBQUksWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLFFBQVMsSUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsSUFBRyxFQUFDLEdBQUUsVUFBUyxFQUFDLElBQUssVUFBUyxNQUFPLFVBQVMsYUFBYywwRUFBeUUsUUFBUyxTQUFRLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxJQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLElBQUcsRUFBQyxHQUFFLFdBQVUsRUFBQyxJQUFLLFdBQVUsTUFBTyxXQUFVLGFBQWMseUVBQXdFLFFBQVMsT0FBTSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxRQUFPLE9BQU8sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFRLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxjQUFlLEVBQUMsT0FBUSxFQUFDLE1BQU8sRUFBQyxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLElBQUcsR0FBRSxVQUFXLEVBQUMsTUFBTyxFQUFDLGNBQWUsV0FBVSxFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLElBQUcsWUFBYSxNQUFLLE9BQVEsQ0FBQyxFQUFDLE9BQVEsR0FBRSxRQUFTLE1BQUssWUFBYSxLQUFJLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxNQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsR0FBRSxRQUFTLE1BQUssWUFBYSxJQUFHLEVBQUMsRUFBQyxHQUFFLGdCQUFlLEVBQUMsSUFBSyxnQkFBZSxNQUFPLGdCQUFlLGFBQWMsK0VBQThFLFFBQVMsWUFBVyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxRQUFPLE9BQU8sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEdBQUUsWUFBYSxLQUFJLEdBQUUsVUFBVyxFQUFDLE1BQU8sRUFBQyxjQUFlLFdBQVUsRUFBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxLQUFJLFlBQWEsTUFBSyxFQUFDLEdBQUUsV0FBVSxFQUFDLElBQUssV0FBVSxNQUFPLFdBQVUsYUFBYyxtRkFBa0YsUUFBUyxPQUFNLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxHQUFFLFlBQWEsSUFBRyxFQUFDLEdBQUUsb0JBQW1CLEVBQUMsSUFBSyxvQkFBbUIsTUFBTyxvQkFBbUIsYUFBYyxvRkFBbUYsUUFBUyxLQUFJLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQVEsRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLElBQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLElBQUcsRUFBQyxHQUFFLGNBQWEsRUFBQyxJQUFLLGNBQWEsTUFBTyxjQUFhLGFBQWMsMkVBQTBFLFFBQVMsWUFBVyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxXQUFVLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxHQUFFLFlBQWEsTUFBSyxFQUFDLEdBQUUsZUFBYyxFQUFDLElBQUssZUFBYyxNQUFPLGVBQWMsYUFBYyx3RkFBdUYsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxHQUFFLE9BQVEsR0FBRSxRQUFTLEVBQUMsRUFBQyxHQUFFLGdCQUFlLEVBQUMsSUFBSyxnQkFBZSxNQUFPLGdCQUFlLGFBQWMsMEVBQXlFLFFBQVMsWUFBVyxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsS0FBSSxZQUFhLElBQUcsRUFBQyxHQUFFLGVBQWMsRUFBQyxJQUFLLGVBQWMsTUFBTyxlQUFjLGFBQWMsMEVBQXlFLFFBQVMsT0FBTSxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksTUFBSyxtQkFBb0IsT0FBTSxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU8sUUFBUyxLQUFJLEdBQUUsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLEdBQUUsRUFBQyxHQUFFLG9CQUFtQixFQUFDLElBQUssb0JBQW1CLE1BQU8sb0JBQW1CLGFBQWMsa0ZBQWlGLFFBQVMsYUFBWSxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksT0FBTSxhQUFjLE9BQU0sY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxRQUFPLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxHQUFFLE9BQVEsR0FBRSxRQUFTLEVBQUMsRUFBQyxHQUFFLGNBQWEsRUFBQyxJQUFLLGNBQWEsTUFBTyxjQUFhLGFBQWMsMEVBQXlFLFFBQVMsWUFBVyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxXQUFVLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxLQUFJLFlBQWEsS0FBSyxFQUFDLEdBQUUsZUFBYyxFQUFDLElBQUssZUFBYyxNQUFPLGVBQWMsYUFBYyxnRkFBK0UsUUFBUyxXQUFVLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFVBQVMsUUFBTyxPQUFPLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsT0FBTSxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQVEsT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxLQUFJLE9BQVEsQ0FBQyxFQUFDLE9BQVEsSUFBRyxRQUFTLEtBQUksTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLE1BQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxFQUFDLEVBQUMsR0FBRSxlQUFjLEVBQUMsSUFBSyxlQUFjLE1BQU8sZUFBYyxhQUFjLGtGQUFpRixRQUFTLFdBQVUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsVUFBUyxRQUFPLE9BQU8sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFRLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxJQUFHLFFBQVMsS0FBSSxPQUFRLENBQUMsRUFBQyxPQUFRLElBQUcsUUFBUyxLQUFJLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxNQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsRUFBQyxFQUFDLEdBQUUsZUFBYyxFQUFDLElBQUssZUFBYyxNQUFPLGVBQWMsYUFBYywrRUFBOEUsUUFBUyxZQUFXLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFPLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxLQUFJLFlBQWEsTUFBSyxFQUFDLEdBQUUsZUFBYyxFQUFDLElBQUssZUFBYyxNQUFPLGVBQWMsYUFBYyx1RkFBc0YsUUFBUyxPQUFNLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQU8sT0FBTSxVQUFTLFFBQU8sU0FBUSxLQUFLLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBUSxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxHQUFFLGFBQWMsS0FBSSxHQUFFLFVBQVcsRUFBQyxNQUFPLEVBQUMsY0FBZSxXQUFVLEVBQUMsRUFBQyxHQUFFLEtBQU0sRUFBQyxVQUFXLEVBQUMsTUFBTyxFQUFDLFdBQVksRUFBQyxNQUFPLE1BQUssRUFBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsTUFBSyxPQUFRLENBQUMsRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsR0FBRSxhQUFjLE1BQUssTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLE1BQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEdBQUUsYUFBYyxLQUFJLEVBQUMsRUFBQyxHQUFFLGVBQWMsRUFBQyxJQUFLLGVBQWMsTUFBTyxlQUFjLGFBQWMsdUZBQXNGLFFBQVMsYUFBWSxZQUFhLE9BQU0sV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsSUFBRyxZQUFhLE1BQUssRUFBQyxHQUFFLGlCQUFnQixFQUFDLElBQUssaUJBQWdCLE1BQU8saUJBQWdCLGFBQWMsdUZBQXNGLFFBQVMsYUFBWSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsUUFBTyxPQUFPLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLElBQUcsWUFBYSxNQUFLLEVBQUMsR0FBRSxlQUFjLEVBQUMsSUFBSyxlQUFjLE1BQU8sZUFBYyxhQUFjLGtGQUFpRixRQUFTLGFBQVksWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE9BQU0sYUFBYyxPQUFNLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsT0FBTyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEdBQUUsT0FBUSxHQUFFLFFBQVMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxFQUFDLEdBQUUsV0FBVSxFQUFDLElBQUssV0FBVSxNQUFPLFdBQVUsYUFBYyw4RUFBNkUsUUFBUyxPQUFNLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQU8sT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLElBQUcsWUFBYSxNQUFLLEVBQUMsR0FBRSxXQUFVLEVBQUMsSUFBSyxXQUFVLE1BQU8sV0FBVSxhQUFjLCtFQUE4RSxRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsUUFBTyxPQUFNLFVBQVMsUUFBTyxPQUFPLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBUSxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLElBQUcsWUFBYSxLQUFJLEdBQUUsVUFBVyxFQUFDLE1BQU8sRUFBQyxjQUFlLFdBQVUsRUFBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxPQUFRLENBQUMsRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsR0FBRSxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sTUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsRUFBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsS0FBTSxFQUFDLFFBQVMsRUFBQyw4QkFBNkIsRUFBQyxJQUFLLDhCQUE2QixNQUFPLHlCQUF3QixhQUFjLDJFQUEwRSxRQUFTLFFBQU8sWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLFFBQU8sT0FBTyxFQUFDLENBQUMsR0FBRSxXQUFZLE9BQU0sbUJBQW9CLE1BQUssYUFBYyxNQUFLLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLElBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsS0FBSSxZQUFhLEtBQUksT0FBUSxDQUFDLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLEtBQUksTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLElBQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLElBQUcsRUFBQyxFQUFDLEdBQUUsZ0NBQStCLEVBQUMsSUFBSyxnQ0FBK0IsTUFBTyw2QkFBNEIsYUFBYywyRUFBMEUsUUFBUyxRQUFPLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQVEsUUFBUyxJQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLEtBQUksWUFBYSxLQUFJLE9BQVEsQ0FBQyxFQUFDLE9BQVEsS0FBSSxRQUFTLEdBQUUsWUFBYSxLQUFJLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxJQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsS0FBSSxRQUFTLEdBQUUsWUFBYSxJQUFHLEVBQUMsRUFBQyxHQUFFLFlBQVcsRUFBQyxJQUFLLFlBQVcsTUFBTyxZQUFXLGFBQWMsNEVBQTJFLFFBQVMsUUFBTyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFRLFFBQVMsSUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxLQUFJLFlBQWEsS0FBSSxPQUFRLENBQUMsRUFBQyxPQUFRLEtBQUksUUFBUyxHQUFFLFlBQWEsS0FBSSxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sSUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLEtBQUksUUFBUyxHQUFFLFlBQWEsSUFBRyxFQUFDLEVBQUMsR0FBRSw4QkFBNkIsRUFBQyxJQUFLLDhCQUE2QixNQUFPLDhCQUE2QixhQUFjLGtGQUFpRixRQUFTLFFBQU8sWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE9BQU0sYUFBYyxPQUFNLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxTQUFRLEtBQUssRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFLLFFBQVMsRUFBQyxFQUFDLEdBQUUsc0JBQXFCLEVBQUMsSUFBSyxzQkFBcUIsTUFBTyxzQkFBcUIsYUFBYyxrRkFBaUYsUUFBUyxRQUFPLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxPQUFPLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsTUFBSyxRQUFTLEVBQUMsRUFBQyxHQUFFLFlBQVcsRUFBQyxJQUFLLFlBQVcsTUFBTyxZQUFXLGFBQWMsbUZBQWtGLFFBQVMsUUFBTyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLElBQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsR0FBRSxZQUFhLEtBQUksT0FBUSxDQUFDLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEdBQUUsTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLElBQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEVBQUMsRUFBQyxFQUFDLEdBQUUsNEJBQTJCLEVBQUMsSUFBSyw0QkFBMkIsTUFBTyx5QkFBd0IsYUFBYyx3RUFBdUUsUUFBUyxRQUFPLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLElBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsS0FBSSxZQUFhLEtBQUksT0FBUSxDQUFDLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLEtBQUksTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLElBQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLElBQUcsRUFBQyxFQUFDLEdBQUUsc0JBQXFCLEVBQUMsSUFBSyxzQkFBcUIsTUFBTyxzQkFBcUIsYUFBYyxrRkFBaUYsUUFBUyxRQUFPLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsU0FBUSxLQUFLLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBSyxRQUFTLEVBQUMsRUFBQyxHQUFFLGtCQUFpQixFQUFDLElBQUssa0JBQWlCLE1BQU8sa0JBQWlCLGFBQWMsNEVBQTJFLFFBQVMsY0FBYSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLEdBQUUsWUFBYSxLQUFJLE9BQVEsQ0FBQyxFQUFDLE9BQVEsR0FBRSxRQUFTLEdBQUUsWUFBYSxLQUFJLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxJQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsR0FBRSxRQUFTLEdBQUUsWUFBYSxJQUFHLEVBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQztBQUFBO0FBQUE7OztBQ0E5LzdELFNBQVMsVUFBVSxpQkFBaUI7QUFDcEMsU0FBUyxRQUFBQyxhQUFZO0FBUXJCLFNBQVMsWUFBWTtBQUNuQixTQUFPQSxNQUFLLFNBQVMsR0FBRyxtQkFBbUI7QUFDN0M7QUFFQSxTQUFTLE9BQU8sTUFBTTtBQUNwQixRQUFNLE1BQU0sQ0FBQztBQUNiLGFBQVcsWUFBWSxXQUFXO0FBQ2hDLFFBQUksS0FBSyxRQUFRLEdBQUcsT0FBUSxLQUFJLFFBQVEsSUFBSSxFQUFFLFFBQVEsS0FBSyxRQUFRLEVBQUUsT0FBTztBQUFBLEVBQzlFO0FBQ0EsU0FBTztBQUNUO0FBRUEsZUFBZSxZQUFZO0FBQ3pCLE1BQUk7QUFDRixXQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUFBLEVBQ3hELFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsZUFBc0IsZUFBZSxFQUFFLFVBQVUsTUFBTSxJQUFJLENBQUMsR0FBRztBQUM3RCxRQUFNLFdBQVcsTUFBTSxRQUFRLFdBQVc7QUFDMUMsTUFBSSxDQUFDLFNBQVMsR0FBSSxPQUFNLElBQUksTUFBTSx5QkFBeUIsU0FBUyxNQUFNLEVBQUU7QUFDNUUsUUFBTUMsYUFBWSxPQUFPLE1BQU0sU0FBUyxLQUFLLENBQUM7QUFDOUMsWUFBVSxTQUFTLENBQUM7QUFDcEIsUUFBTSxVQUFVLFVBQVUsR0FBRyxLQUFLLFVBQVUsRUFBRSxJQUFJLEtBQUssSUFBSSxHQUFHLFdBQUFBLFdBQVUsQ0FBQyxDQUFDO0FBQzFFLFNBQU9BO0FBQ1Q7QUFFQSxlQUFzQixZQUFZLEVBQUUsVUFBVSxNQUFNLElBQUksQ0FBQyxHQUFHO0FBQzFELFFBQU1DLFVBQVMsTUFBTSxVQUFVO0FBQy9CLE1BQUlBLFdBQVUsS0FBSyxJQUFJLElBQUlBLFFBQU8sS0FBSyxJQUFLLFFBQU9BLFFBQU87QUFDMUQsaUJBQWUsRUFBRSxRQUFRLENBQUMsRUFBRSxNQUFNLE1BQU07QUFBQSxFQUFDLENBQUM7QUFDMUMsU0FBT0EsU0FBUSxhQUFhO0FBQzlCO0FBUU8sU0FBUyxjQUFjRCxZQUFXLGFBQWE7QUFDcEQsUUFBTSxRQUFRLFVBQVUsT0FBTyxDQUFDLE1BQU0sWUFBWSxTQUFTLENBQUMsQ0FBQztBQUM3RCxRQUFNRSxVQUFTLENBQUM7QUFDaEIsYUFBVyxZQUFZLE9BQU87QUFDNUIsVUFBTSxVQUFVLE9BQU8sUUFBUUYsV0FBVSxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQUMsRUFDN0QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sVUFBVSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUN2RCxLQUFLLENBQUMsR0FBRyxNQUFNLE9BQU8sRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxjQUFjLE9BQU8sRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0FBQ2hHLGVBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTO0FBQzdCLE1BQUFFLFFBQU8sS0FBSztBQUFBLFFBQ1YsTUFBTSxHQUFHLFFBQVEsSUFBSSxFQUFFO0FBQUEsUUFDdkI7QUFBQSxRQUNBLE1BQU0sRUFBRSxlQUFlLEVBQUUsUUFBUTtBQUFBLFFBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxTQUFTLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxPQUFPLEtBQUssRUFBRSxLQUFLLE9BQU8sSUFBSTtBQUFBLFFBQ25GLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFBQTtBQUFBO0FBQUEsUUFHWixTQUFTLEVBQUUsT0FBTyxTQUFTLEVBQUUsT0FBTyxXQUFXO0FBQUEsTUFDakQsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0EsU0FBT0E7QUFDVDtBQUVPLFNBQVMsV0FBVyxNQUFNLGFBQWE7QUFDNUMsUUFBTSxRQUFRLEtBQUssTUFBTSxzQkFBc0I7QUFDL0MsTUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLFNBQVMsTUFBTSxDQUFDLENBQUMsRUFBRyxRQUFPO0FBQ3RELFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxVQUFVLE1BQU0sQ0FBQztBQUFBLElBQ2pCLE1BQU07QUFBQSxJQUNOLE9BQU87QUFBQSxJQUNQLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxFQUNYO0FBQ0Y7QUFyRkEsSUFLTSxhQUNBLFdBQ0EsS0FzQ0EsV0FJQTtBQWpETjtBQUFBO0FBRUE7QUFDQTtBQUVBLElBQU0sY0FBYztBQUNwQixJQUFNLFlBQVksQ0FBQyxVQUFVLGFBQWEsVUFBVSxLQUFLO0FBQ3pELElBQU0sTUFBTSxLQUFLLEtBQUssS0FBSztBQXNDM0IsSUFBTSxZQUFZLENBQUMsTUFDakIsRUFBRSxjQUFjLFNBQ2YsQ0FBQyxFQUFFLGNBQWUsRUFBRSxXQUFXLE9BQU8sU0FBUyxNQUFNLEtBQUssRUFBRSxXQUFXLFFBQVEsU0FBUyxNQUFNO0FBRWpHLElBQU0saUJBQWlCLENBQUMsT0FBTyxVQUFVLEtBQUssRUFBRTtBQUFBO0FBQUE7OztBQ2pEaEQsU0FBUyxZQUFBQyxXQUFVLGFBQUFDLGtCQUFpQjtBQUNwQyxTQUFTLFFBQUFDLGFBQVk7QUFRckIsU0FBU0MsYUFBWTtBQUNuQixTQUFPRCxNQUFLLFNBQVMsR0FBRyx5QkFBeUI7QUFDbkQ7QUFFTyxTQUFTLGVBQWUsU0FBUztBQUN0QyxTQUFPLFFBQVEsSUFBSSxDQUFDLE9BQU87QUFBQSxJQUN6QixNQUFNLFNBQVMsRUFBRSxJQUFJO0FBQUEsSUFDckIsVUFBVTtBQUFBLElBQ1YsTUFBTSxHQUFHLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxJQUFJO0FBQUEsSUFDM0MsT0FBTztBQUFBLElBQ1AsUUFBUTtBQUFBLElBQ1IsU0FBUyxFQUFFLGtCQUFrQjtBQUFBLEVBQy9CLEVBQUU7QUFDSjtBQUVBLGVBQXNCLGdCQUFnQixhQUFhO0FBQ2pELE1BQUlFLFVBQVM7QUFDYixNQUFJO0FBQ0YsSUFBQUEsVUFBUyxLQUFLLE1BQU0sTUFBTUosVUFBU0csV0FBVSxHQUFHLE9BQU8sQ0FBQztBQUFBLEVBQzFELFFBQVE7QUFBQSxFQUFDO0FBQ1QsTUFBSUMsV0FBVSxLQUFLLElBQUksSUFBSUEsUUFBTyxLQUFLQyxLQUFLLFFBQU8sZUFBZUQsUUFBTyxNQUFNO0FBQy9FLE1BQUksQ0FBQyxZQUFhLFFBQU8sZUFBZUEsU0FBUSxVQUFVLENBQUMsQ0FBQztBQUU1RCxNQUFJO0FBQ0YsVUFBTSxXQUFXLE1BQU0sTUFBTSxZQUFZO0FBQUEsTUFDdkMsU0FBUztBQUFBLFFBQ1AsZUFBZSxVQUFVLFlBQVksTUFBTTtBQUFBLFFBQzNDLEdBQUcsWUFBWTtBQUFBLFFBQ2YsWUFBWTtBQUFBLE1BQ2Q7QUFBQSxJQUNGLENBQUM7QUFDRCxRQUFJLENBQUMsU0FBUyxHQUFJLE9BQU0sSUFBSSxNQUFNLE9BQU8sU0FBUyxNQUFNLENBQUM7QUFDekQsVUFBTSxPQUFPLE1BQU0sU0FBUyxLQUFLO0FBQ2pDLFVBQU1FLFdBQVUsS0FBSyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTztBQUFBLE1BQzdDLE1BQU0sRUFBRTtBQUFBLE1BQ1IsYUFBYSxFQUFFO0FBQUEsTUFDZixPQUFPLEVBQUUsU0FBUyxFQUFFO0FBQUEsTUFDcEIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCO0FBQUEsSUFDOUQsRUFBRTtBQUNGLFFBQUlBLFFBQU8sV0FBVyxFQUFHLE9BQU0sSUFBSSxNQUFNLGtCQUFrQjtBQUMzRCxjQUFVLFNBQVMsQ0FBQztBQUNwQixVQUFNTCxXQUFVRSxXQUFVLEdBQUcsS0FBSyxVQUFVLEVBQUUsSUFBSSxLQUFLLElBQUksR0FBRyxRQUFBRyxRQUFPLENBQUMsQ0FBQztBQUN2RSxXQUFPLGVBQWVBLE9BQU07QUFBQSxFQUM5QixRQUFRO0FBQ04sV0FBTyxlQUFlRixTQUFRLFVBQVUsQ0FBQyxDQUFDO0FBQUEsRUFDNUM7QUFDRjtBQXZEQSxJQU1NLFlBQ0FDO0FBUE47QUFBQTtBQUVBO0FBSUEsSUFBTSxhQUFhO0FBQ25CLElBQU1BLE9BQU0sS0FBSyxLQUFLLEtBQUs7QUFBQTtBQUFBOzs7QUNQM0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFTLG9CQUFvQjtBQUM3QixTQUFTLGFBQWEsa0JBQWtCO0FBQ3hDLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsWUFBQUUsV0FBVSxhQUFBQyxZQUFXLGFBQWE7QUFDM0MsU0FBUyxRQUFBQyxhQUFZO0FBV3JCLFNBQVMsV0FBVztBQUNsQixTQUFPQSxNQUFLLFNBQVMsR0FBRyxXQUFXO0FBQ3JDO0FBRUEsU0FBUyxVQUFVLFFBQVE7QUFDekIsU0FBTyxPQUFPLFNBQVMsUUFBUSxFQUFFLFFBQVEsT0FBTyxHQUFHLEVBQUUsUUFBUSxPQUFPLEdBQUcsRUFBRSxRQUFRLE9BQU8sRUFBRTtBQUM1RjtBQUVPLFNBQVMsZ0JBQWdCLE9BQU87QUFDckMsTUFBSTtBQUNGLFVBQU0sVUFBVSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDbEMsV0FBTyxLQUFLLE1BQU0sT0FBTyxLQUFLLFNBQVMsV0FBVyxFQUFFLFNBQVMsT0FBTyxDQUFDO0FBQUEsRUFDdkUsUUFBUTtBQUNOLFdBQU8sQ0FBQztBQUFBLEVBQ1Y7QUFDRjtBQUVPLFNBQVMsb0JBQW9CLFFBQVE7QUFDMUMsU0FBTyxPQUFPLDZCQUE2QixHQUFHLHNCQUFzQixPQUFPLHNCQUFzQjtBQUNuRztBQUVBLGVBQWUsV0FBVztBQUN4QixNQUFJO0FBQ0YsV0FBTyxLQUFLLE1BQU0sTUFBTUYsVUFBUyxTQUFTLEdBQUcsT0FBTyxDQUFDO0FBQUEsRUFDdkQsUUFBUTtBQUNOLFdBQU8sQ0FBQztBQUFBLEVBQ1Y7QUFDRjtBQUVBLGVBQWUsVUFBVSxNQUFNO0FBQzdCLFlBQVUsU0FBUyxDQUFDO0FBQ3BCLFFBQU1DLFdBQVUsU0FBUyxHQUFHLEtBQUssVUFBVSxNQUFNLE1BQU0sQ0FBQyxJQUFJLElBQUk7QUFDaEUsUUFBTSxNQUFNLFNBQVMsR0FBRyxHQUFLO0FBQy9CO0FBRUEsZUFBZSxhQUFhLFFBQVE7QUFDbEMsUUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXO0FBQUEsSUFDdEMsUUFBUTtBQUFBLElBQ1IsU0FBUyxFQUFFLGdCQUFnQixvQ0FBb0M7QUFBQSxJQUMvRCxNQUFNLElBQUksZ0JBQWdCLE1BQU0sRUFBRSxTQUFTO0FBQUEsRUFDN0MsQ0FBQztBQUNELE1BQUksQ0FBQyxTQUFTLElBQUk7QUFDaEIsVUFBTSxJQUFJLE1BQU0seUJBQXlCLFNBQVMsTUFBTSxJQUFJLE1BQU0sU0FBUyxLQUFLLENBQUMsRUFBRTtBQUFBLEVBQ3JGO0FBQ0EsU0FBTyxTQUFTLEtBQUs7QUFDdkI7QUFFQSxTQUFTLFlBQVksTUFBTSxRQUFRO0FBQ2pDLFFBQU0sU0FBUyxPQUFPLFdBQVcsZ0JBQWdCLE9BQU8sUUFBUSxJQUFJLENBQUM7QUFDckUsT0FBSyxTQUFTO0FBQUEsSUFDWixjQUFjLE9BQU87QUFBQSxJQUNyQixlQUFlLE9BQU8saUJBQWlCLEtBQUssUUFBUTtBQUFBLElBQ3BELFVBQVUsT0FBTyxZQUFZLEtBQUssUUFBUTtBQUFBLElBQzFDLFlBQVksb0JBQW9CLE1BQU0sS0FBSyxLQUFLLFFBQVEsY0FBYztBQUFBLElBQ3RFLE9BQU8sT0FBTyxTQUFTLEtBQUssUUFBUSxTQUFTO0FBQUEsSUFDN0MsWUFBWSxLQUFLLElBQUksS0FBSyxPQUFPLGNBQWMsUUFBUTtBQUFBLEVBQ3pEO0FBQ0EsU0FBTztBQUNUO0FBRUEsZUFBc0IsY0FBYyxFQUFFLGNBQWMsTUFBTSxZQUFZLElBQUksS0FBSyxLQUFNLFFBQVEsTUFBTTtBQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUc7QUFDNUcsUUFBTSxXQUFXLFVBQVUsWUFBWSxFQUFFLENBQUM7QUFDMUMsUUFBTSxZQUFZLFVBQVUsV0FBVyxRQUFRLEVBQUUsT0FBTyxRQUFRLEVBQUUsT0FBTyxDQUFDO0FBQzFFLFFBQU0sUUFBUSxVQUFVLFlBQVksRUFBRSxDQUFDO0FBRXZDLFFBQU0sTUFBTSxHQUFHLFFBQVEsSUFBSSxJQUFJLGdCQUFnQjtBQUFBLElBQzdDLGVBQWU7QUFBQSxJQUNmLFdBQVc7QUFBQSxJQUNYLGNBQWM7QUFBQSxJQUNkLE9BQU87QUFBQSxJQUNQLGdCQUFnQjtBQUFBLElBQ2hCLHVCQUF1QjtBQUFBLElBQ3ZCO0FBQUEsSUFDQSxRQUFRO0FBQUEsSUFDUiw0QkFBNEI7QUFBQSxJQUM1QiwyQkFBMkI7QUFBQSxJQUMzQixZQUFZO0FBQUEsRUFDZCxDQUFDLEVBQUUsU0FBUyxDQUFDO0FBRWIsUUFBTSxPQUFPLE1BQU0sSUFBSSxRQUFRLENBQUNFLFVBQVMsV0FBVztBQUNsRCxVQUFNLFNBQVMsYUFBYSxDQUFDLEtBQUssUUFBUTtBQUN4QyxZQUFNLGFBQWEsSUFBSSxJQUFJLElBQUksS0FBSyxvQkFBb0IsYUFBYSxFQUFFO0FBQ3ZFLFVBQUksV0FBVyxhQUFhLGtCQUFrQjtBQUM1QyxZQUFJLFVBQVUsR0FBRyxFQUFFLElBQUk7QUFDdkI7QUFBQSxNQUNGO0FBQ0EsWUFBTSxXQUFXLFdBQVcsYUFBYSxJQUFJLE9BQU87QUFDcEQsWUFBTSxVQUFVLFdBQVcsYUFBYSxJQUFJLE1BQU07QUFDbEQsWUFBTSxXQUFXLFdBQVcsYUFBYSxJQUFJLE9BQU87QUFDcEQsVUFBSSxVQUFVLEtBQUssRUFBRSxnQkFBZ0IsWUFBWSxDQUFDO0FBQ2xELFVBQUk7QUFBQSxRQUNGLFdBQVcsYUFBYSxRQUNwQixnSEFDQTtBQUFBLE1BQ047QUFDQSxjQUFRO0FBQ1IsVUFBSSxTQUFVLFFBQU8sSUFBSSxNQUFNLHlCQUF5QixRQUFRLEVBQUUsQ0FBQztBQUFBLGVBQzFELENBQUMsV0FBVyxhQUFhLE1BQU8sUUFBTyxJQUFJLE1BQU0sc0RBQXNELENBQUM7QUFBQSxVQUM1RyxDQUFBQSxTQUFRLE9BQU87QUFBQSxJQUN0QixDQUFDO0FBRUQsVUFBTSxRQUFRLFdBQVcsTUFBTTtBQUM3QixjQUFRO0FBQ1IsYUFBTyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFBQSxJQUN2QyxHQUFHLFNBQVM7QUFFWixhQUFTLFVBQVU7QUFDakIsbUJBQWEsS0FBSztBQUNsQixhQUFPLE1BQU07QUFBQSxJQUNmO0FBRUEsV0FBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRO0FBQzFCLGNBQVE7QUFDUixhQUFPLElBQUksU0FBUyxlQUFlLElBQUksTUFBTSxRQUFRLGFBQWEsbURBQW1ELElBQUksR0FBRztBQUFBLElBQzlILENBQUM7QUFDRCxXQUFPLE9BQU8sZUFBZSxhQUFhLE1BQU07QUFDOUMsWUFBTSxHQUFHO0FBQ1QsVUFBSSxZQUFhLFVBQVMsUUFBUSxDQUFDLEdBQUcsR0FBRyxNQUFNO0FBQUEsTUFBQyxDQUFDO0FBQUEsSUFDbkQsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUVELFFBQU0sU0FBUyxNQUFNLGFBQWE7QUFBQSxJQUNoQyxZQUFZO0FBQUEsSUFDWjtBQUFBLElBQ0EsY0FBYztBQUFBLElBQ2QsV0FBVztBQUFBLElBQ1gsZUFBZTtBQUFBLEVBQ2pCLENBQUM7QUFFRCxRQUFNLE9BQU8sWUFBWSxNQUFNLFNBQVMsR0FBRyxNQUFNO0FBQ2pELFFBQU0sVUFBVSxJQUFJO0FBQ3BCLFNBQU8sRUFBRSxPQUFPLEtBQUssT0FBTyxPQUFPLFdBQVcsS0FBSyxPQUFPLFdBQVc7QUFDdkU7QUFFQSxlQUFzQixvQkFBb0I7QUFDeEMsUUFBTSxPQUFPLE1BQU0sU0FBUztBQUM1QixRQUFNLFNBQVMsS0FBSztBQUNwQixNQUFJLENBQUMsUUFBUSxhQUFjLFFBQU87QUFFbEMsTUFBSSxLQUFLLElBQUksS0FBSyxPQUFPLGNBQWMsS0FBSyxpQkFBaUI7QUFDM0QsUUFBSSxDQUFDLE9BQU8sY0FBZSxRQUFPO0FBQ2xDLFVBQU0sU0FBUyxNQUFNLGFBQWE7QUFBQSxNQUNoQyxZQUFZO0FBQUEsTUFDWixlQUFlLE9BQU87QUFBQSxNQUN0QixXQUFXO0FBQUEsTUFDWCxPQUFPO0FBQUEsSUFDVCxDQUFDO0FBQ0QsVUFBTSxZQUFZLFlBQVksTUFBTSxNQUFNO0FBQzFDLFVBQU0sVUFBVSxTQUFTO0FBQ3pCLFdBQU8sZ0JBQWdCLFVBQVUsTUFBTTtBQUFBLEVBQ3pDO0FBQ0EsU0FBTyxnQkFBZ0IsTUFBTTtBQUMvQjtBQUVBLFNBQVMsZ0JBQWdCLFFBQVE7QUFDL0IsU0FBTztBQUFBLElBQ0wsUUFBUSxPQUFPO0FBQUEsSUFDZixTQUFTLE9BQU8sYUFBYSxFQUFFLHNCQUFzQixPQUFPLFdBQVcsSUFBSSxDQUFDO0FBQUEsSUFDNUUsT0FBTyxPQUFPO0FBQUEsRUFDaEI7QUFDRjtBQUVBLGVBQXNCLGtCQUFrQjtBQUN0QyxRQUFNLE9BQU8sTUFBTSxTQUFTO0FBQzVCLFNBQU8sQ0FBQyxFQUFFLEtBQUssUUFBUSxnQkFBZ0IsS0FBSyxRQUFRO0FBQ3REO0FBRUEsZUFBc0IsZUFBZTtBQUNuQyxRQUFNLE9BQU8sTUFBTSxTQUFTO0FBQzVCLFNBQU87QUFBQSxJQUNMLFdBQVcsQ0FBQyxFQUFFLEtBQUssUUFBUSxnQkFBZ0IsS0FBSyxRQUFRO0FBQUEsSUFDeEQsT0FBTyxLQUFLLFFBQVEsU0FBUztBQUFBLEVBQy9CO0FBQ0Y7QUFFQSxlQUFzQixtQkFBbUI7QUFDdkMsUUFBTSxPQUFPLE1BQU0sU0FBUztBQUM1QixTQUFPLEtBQUs7QUFDWixRQUFNLFVBQVUsSUFBSTtBQUN0QjtBQWxNQSxJQU9NLFdBQ0EsVUFDQSxXQUNBLGVBQ0EsY0FDQSxPQUNBO0FBYk47QUFBQTtBQUtBO0FBRUEsSUFBTSxZQUFZO0FBQ2xCLElBQU0sV0FBVztBQUNqQixJQUFNLFlBQVk7QUFDbEIsSUFBTSxnQkFBZ0I7QUFDdEIsSUFBTSxlQUFlLG9CQUFvQixhQUFhO0FBQ3RELElBQU0sUUFBUTtBQUNkLElBQU0sa0JBQWtCLElBQUksS0FBSztBQUFBO0FBQUE7OztBQ2JqQyxTQUFTLFlBQUFDLFdBQVUsYUFBQUMsa0JBQWlCO0FBQ3BDLFNBQVMsUUFBQUMsYUFBWTtBQUdyQixTQUFTLGFBQWE7QUFDcEIsU0FBT0EsTUFBSyxTQUFTLEdBQUcsYUFBYTtBQUN2QztBQUVBLGVBQXNCLGFBQWE7QUFDakMsTUFBSTtBQUNGLFdBQU8sS0FBSyxNQUFNLE1BQU1GLFVBQVMsV0FBVyxHQUFHLE9BQU8sQ0FBQztBQUFBLEVBQ3pELFFBQVE7QUFDTixXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0Y7QUFFQSxlQUFzQixZQUFZLE9BQU87QUFDdkMsUUFBTUcsVUFBUyxFQUFFLEdBQUksTUFBTSxXQUFXLEdBQUksR0FBRyxNQUFNO0FBQ25ELFlBQVUsU0FBUyxDQUFDO0FBQ3BCLFFBQU1GLFdBQVUsV0FBVyxHQUFHLEtBQUssVUFBVUUsU0FBUSxNQUFNLENBQUMsSUFBSSxJQUFJO0FBQ3BFLFNBQU9BO0FBQ1Q7QUFyQkE7QUFBQTtBQUVBO0FBQUE7QUFBQTs7O0FDRkEsU0FBUyxjQUFBQyxhQUFZLG9CQUFvQjtBQUN6QyxTQUFTLFdBQUFDLGdCQUFlO0FBQ3hCLFNBQVMsV0FBQUMsVUFBUyxRQUFBQyxPQUFNLFdBQUFDLGdCQUFlO0FBR3ZDLFNBQVMsYUFBYSxNQUFNO0FBQzFCLE1BQUk7QUFDRixXQUFPSixZQUFXLElBQUksSUFBSSxhQUFhLE1BQU0sT0FBTyxJQUFJO0FBQUEsRUFDMUQsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFFTyxTQUFTLGVBQWUsS0FBSztBQUNsQyxNQUFJLE1BQU1JLFNBQVEsR0FBRztBQUNyQixRQUFNLE9BQU9ILFNBQVE7QUFDckIsU0FBTyxNQUFNO0FBQ1gsUUFBSUQsWUFBV0csTUFBSyxLQUFLLE1BQU0sQ0FBQyxLQUFLLFFBQVEsS0FBTSxRQUFPO0FBQzFELFVBQU0sU0FBU0QsU0FBUSxHQUFHO0FBQzFCLFFBQUksV0FBVyxJQUFLLFFBQU9FLFNBQVEsR0FBRztBQUN0QyxVQUFNO0FBQUEsRUFDUjtBQUNGO0FBRUEsU0FBUyxhQUFhLEtBQUssU0FBUztBQUNsQyxRQUFNLE9BQU8sQ0FBQztBQUNkLE1BQUksTUFBTUEsU0FBUSxHQUFHO0FBQ3JCLFNBQU8sTUFBTTtBQUNYLFNBQUssUUFBUSxHQUFHO0FBQ2hCLFFBQUksUUFBUSxRQUFTO0FBQ3JCLFVBQU0sU0FBU0YsU0FBUSxHQUFHO0FBQzFCLFFBQUksV0FBVyxJQUFLO0FBQ3BCLFVBQU07QUFBQSxFQUNSO0FBQ0EsU0FBTztBQUNUO0FBRU8sU0FBUyxtQkFBbUIsS0FBSztBQUN0QyxRQUFNLFVBQVUsZUFBZSxHQUFHO0FBQ2xDLFFBQU0sUUFBUSxDQUFDO0FBQ2YsUUFBTSxnQkFBZ0IsYUFBYSxpQkFBaUIsQ0FBQztBQUNyRCxNQUFJLGNBQWUsT0FBTSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLGNBQWMsQ0FBQztBQUNsRixhQUFXLE9BQU8sYUFBYSxLQUFLLE9BQU8sR0FBRztBQUM1QyxVQUFNLE9BQU9DLE1BQUssS0FBSyxXQUFXO0FBQ2xDLFVBQU0sVUFBVSxhQUFhLElBQUk7QUFDakMsUUFBSSxRQUFTLE9BQU0sS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQUEsRUFDM0M7QUFDQSxTQUFPLEVBQUUsT0FBTyxRQUFRO0FBQzFCO0FBRU8sU0FBUyxxQkFBcUIsRUFBRSxTQUFTLE9BQU8sR0FBRztBQUN4RCxTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0EsTUFBTSxVQUFVO0FBQ2QsWUFBTSxTQUFTRCxTQUFRRSxTQUFRLFFBQVEsQ0FBQztBQUN4QyxVQUFJLENBQUMsT0FBTyxXQUFXLE9BQU8sRUFBRyxRQUFPLENBQUM7QUFDekMsWUFBTSxRQUFRLENBQUM7QUFDZixpQkFBVyxPQUFPLGFBQWEsUUFBUSxPQUFPLEdBQUc7QUFDL0MsY0FBTSxPQUFPRCxNQUFLLEtBQUssV0FBVztBQUNsQyxZQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUc7QUFDdEIsY0FBTSxVQUFVLGFBQWEsSUFBSTtBQUNqQyxZQUFJLFNBQVM7QUFDWCxpQkFBTyxJQUFJLElBQUk7QUFDZixnQkFBTSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFBQSxRQUM5QjtBQUFBLE1BQ0Y7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFDRjtBQXJFQTtBQUFBO0FBR0E7QUFBQTtBQUFBOzs7QUNIQSxTQUFTLFlBQUFFLFdBQVUsZUFBZTtBQUNsQyxTQUFTLFFBQUFDLGFBQVk7QUFHZCxTQUFTLGlCQUFpQixNQUFNO0FBQ3JDLFFBQU0sUUFBUSxLQUFLLE1BQU0sMEJBQTBCO0FBQ25ELE1BQUksQ0FBQyxNQUFPLFFBQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLEtBQUs7QUFDMUMsUUFBTSxPQUFPLENBQUM7QUFDZCxhQUFXLFFBQVEsTUFBTSxDQUFDLEVBQUUsTUFBTSxJQUFJLEdBQUc7QUFDdkMsVUFBTSxNQUFNLEtBQUssUUFBUSxHQUFHO0FBQzVCLFFBQUksUUFBUSxHQUFJO0FBQ2hCLFNBQUssS0FBSyxNQUFNLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxNQUFNLENBQUMsRUFBRSxLQUFLO0FBQUEsRUFDN0Q7QUFDQSxTQUFPLEVBQUUsTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUU7QUFDbkQ7QUFFQSxlQUFlLFFBQVEsS0FBSyxRQUFRO0FBQ2xDLE1BQUksUUFBUSxDQUFDO0FBQ2IsTUFBSTtBQUNGLFlBQVEsTUFBTSxRQUFRLEtBQUssRUFBRSxlQUFlLEtBQUssQ0FBQztBQUFBLEVBQ3BELFFBQVE7QUFDTixXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0EsUUFBTSxTQUFTLENBQUM7QUFDaEIsYUFBVyxTQUFTLE9BQU87QUFDekIsUUFBSSxDQUFDLE1BQU0sWUFBWSxFQUFHO0FBQzFCLFVBQU0sT0FBT0EsTUFBSyxLQUFLLE1BQU0sTUFBTSxVQUFVO0FBQzdDLFFBQUk7QUFDRixZQUFNLEVBQUUsS0FBSyxJQUFJLGlCQUFpQixNQUFNRCxVQUFTLE1BQU0sT0FBTyxDQUFDO0FBQy9ELGFBQU8sS0FBSztBQUFBLFFBQ1YsTUFBTSxLQUFLLFFBQVEsTUFBTTtBQUFBLFFBQ3pCLGFBQWEsS0FBSyxlQUFlO0FBQUEsUUFDakM7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxRQUFRO0FBQUEsSUFBQztBQUFBLEVBQ1g7QUFDQSxTQUFPO0FBQ1Q7QUF3RkEsZUFBc0IsaUJBQWlCLE1BQU07QUFDM0MsUUFBTSxVQUFVO0FBQUEsSUFDZDtBQUFBLE1BQ0UsTUFBTTtBQUFBLE1BQ04sYUFBYTtBQUFBLE1BQ2IsUUFBUTtBQUFBLE1BQ1IsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBO0FBQUEsTUFDRSxNQUFNO0FBQUEsTUFDTixhQUFhO0FBQUEsTUFDYixRQUFRO0FBQUEsTUFDUixNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0E7QUFBQSxNQUNFLE1BQU07QUFBQSxNQUNOLGFBQWE7QUFBQSxNQUNiLFFBQVE7QUFBQSxNQUNSLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUNBLFFBQU0sU0FBUyxNQUFNLFFBQVEsZ0JBQWdCLEdBQUcsUUFBUTtBQUN4RCxRQUFNLFVBQVUsTUFBTSxRQUFRLGlCQUFpQixJQUFJLEdBQUcsU0FBUztBQUMvRCxRQUFNLFNBQVMsb0JBQUksSUFBSTtBQUN2QixhQUFXLFNBQVMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxRQUFRLEdBQUcsT0FBTyxFQUFHLFFBQU8sSUFBSSxNQUFNLE1BQU0sS0FBSztBQUNyRixRQUFNLFNBQVMsQ0FBQyxHQUFHLE9BQU8sT0FBTyxDQUFDO0FBRWxDLFNBQU87QUFBQSxJQUNMLE1BQU0sTUFBTTtBQUFBLElBQ1osTUFBTSxLQUFLLE1BQU07QUFDZixZQUFNLFFBQVEsT0FBTyxJQUFJLElBQUk7QUFDN0IsVUFBSSxDQUFDLE1BQU8sUUFBTztBQUNuQixVQUFJLE1BQU0sS0FBTSxRQUFPLE1BQU07QUFDN0IsWUFBTSxFQUFFLEtBQUssSUFBSSxpQkFBaUIsTUFBTUEsVUFBUyxNQUFNLE1BQU0sT0FBTyxDQUFDO0FBQ3JFLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNGO0FBbktBLElBd0NNLFVBSUEsZ0JBcUNBLGlCQXVCQTtBQXhHTjtBQUFBO0FBRUE7QUFzQ0EsSUFBTSxXQUFXO0FBQUE7QUFBQTtBQUlqQixJQUFNLGlCQUFpQjtBQUFBO0FBQUEsRUFFckIsUUFBUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1DVixJQUFNLGtCQUFrQjtBQUFBO0FBQUEsRUFFdEIsUUFBUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUJWLElBQU0sb0JBQW9CO0FBQUE7QUFBQSxFQUV4QixRQUFRO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDMUdWLFNBQVMsWUFBQUUsV0FBVSxXQUFBQyxnQkFBZTtBQUNsQyxTQUFTLFFBQUFDLGFBQVk7QUFJZCxTQUFTLG9CQUFvQjtBQUNsQyxTQUFPQSxNQUFLLFNBQVMsR0FBRyxVQUFVO0FBQ3BDO0FBRU8sU0FBUyxtQkFBbUIsTUFBTTtBQUN2QyxTQUFPQSxNQUFLLE1BQU0sU0FBUyxVQUFVO0FBQ3ZDO0FBRUEsZUFBZUMsU0FBUSxLQUFLLFFBQVE7QUFDbEMsTUFBSSxRQUFRLENBQUM7QUFDYixNQUFJO0FBQ0YsWUFBUSxNQUFNRixTQUFRLEdBQUc7QUFBQSxFQUMzQixRQUFRO0FBQ04sV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUNBLFFBQU0sV0FBVyxDQUFDO0FBQ2xCLGFBQVcsUUFBUSxPQUFPO0FBQ3hCLFFBQUksQ0FBQyxLQUFLLFNBQVMsS0FBSyxFQUFHO0FBQzNCLFFBQUk7QUFDRixZQUFNLEVBQUUsS0FBSyxJQUFJLGlCQUFpQixNQUFNRCxVQUFTRSxNQUFLLEtBQUssSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUMxRSxlQUFTLEtBQUs7QUFBQSxRQUNaLE1BQU0sS0FBSyxNQUFNLEdBQUcsRUFBRTtBQUFBLFFBQ3RCLGFBQWEsS0FBSyxlQUFlO0FBQUEsUUFDakM7QUFBQSxRQUNBLE1BQU1BLE1BQUssS0FBSyxJQUFJO0FBQUEsTUFDdEIsQ0FBQztBQUFBLElBQ0gsUUFBUTtBQUFBLElBQUM7QUFBQSxFQUNYO0FBQ0EsU0FBTztBQUNUO0FBRU8sU0FBUyxjQUFjLE1BQU0sTUFBTTtBQUN4QyxTQUFPLEtBQUssU0FBUyxZQUFZLElBQzdCLEtBQUssV0FBVyxjQUFjLElBQUksSUFDbEMsT0FDRSxHQUFHLEtBQUssS0FBSyxDQUFDO0FBQUE7QUFBQSxFQUFPLElBQUksS0FDekI7QUFDUjtBQUVBLGVBQXNCLG1CQUFtQixNQUFNO0FBQzdDLFFBQU0sU0FBUyxNQUFNQyxTQUFRLGtCQUFrQixHQUFHLFFBQVE7QUFDMUQsUUFBTSxVQUFVLE1BQU1BLFNBQVEsbUJBQW1CLElBQUksR0FBRyxTQUFTO0FBQ2pFLFFBQU0sU0FBUyxvQkFBSSxJQUFJO0FBQ3ZCLGFBQVcsV0FBVyxDQUFDLEdBQUcsUUFBUSxHQUFHLE9BQU8sRUFBRyxRQUFPLElBQUksUUFBUSxNQUFNLE9BQU87QUFDL0UsUUFBTSxXQUFXLENBQUMsR0FBRyxPQUFPLE9BQU8sQ0FBQztBQUVwQyxTQUFPO0FBQUEsSUFDTCxNQUFNLE1BQU07QUFBQSxJQUNaLE1BQU0sS0FBSyxNQUFNLE9BQU8sSUFBSTtBQUMxQixZQUFNLFVBQVUsT0FBTyxJQUFJLElBQUk7QUFDL0IsVUFBSSxDQUFDLFFBQVMsUUFBTztBQUNyQixZQUFNLEVBQUUsS0FBSyxJQUFJLGlCQUFpQixNQUFNSCxVQUFTLFFBQVEsTUFBTSxPQUFPLENBQUM7QUFDdkUsYUFBTyxjQUFjLEtBQUssS0FBSyxHQUFHLEtBQUssS0FBSyxDQUFDO0FBQUEsSUFDL0M7QUFBQSxFQUNGO0FBQ0Y7QUE1REE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBOzs7QUNIQSxTQUFTLFlBQUFJLFdBQVUsYUFBQUMsa0JBQWlCO0FBQ3BDLFNBQVMsa0JBQWtCO0FBRzNCLFNBQVMsU0FBUyxLQUFLO0FBQ3JCLFFBQU0sU0FBUyxDQUFDO0FBQ2hCLFFBQU0sS0FBSztBQUNYLE1BQUk7QUFDSixTQUFRLElBQUksR0FBRyxLQUFLLEdBQUcsR0FBSTtBQUN6QixRQUFJLEVBQUUsQ0FBQyxNQUFNLFVBQWEsRUFBRSxDQUFDLE1BQU0sT0FBVyxRQUFPLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUU7QUFBQSxRQUNwRixRQUFPLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFBQSxFQUN2QztBQUNBLFNBQU87QUFDVDtBQUVPLFNBQVMsYUFBYSxLQUFLO0FBQ2hDLFFBQU0sU0FBUyxTQUFTLEdBQUc7QUFFM0IsUUFBTSxNQUFNLENBQUM7QUFDYixTQUFPLE9BQU8sVUFBVSwyQkFBMkIsS0FBSyxPQUFPLENBQUMsQ0FBQyxHQUFHO0FBQ2xFLFVBQU0sTUFBTSxPQUFPLENBQUMsRUFBRSxRQUFRLEdBQUc7QUFDakMsUUFBSSxPQUFPLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsV0FBTyxNQUFNO0FBQUEsRUFDZjtBQUNBLE1BQUksQ0FBQyxPQUFPLE9BQVEsT0FBTSxJQUFJLE1BQU0sZUFBZTtBQUNuRCxTQUFPLEVBQUUsU0FBUyxPQUFPLENBQUMsR0FBRyxNQUFNLE9BQU8sTUFBTSxDQUFDLEdBQUcsSUFBSTtBQUMxRDtBQUVPLFNBQVMsZ0JBQWdCLEtBQUs7QUFDbkMsUUFBTSxTQUFTLFNBQVMsR0FBRztBQUMzQixNQUFJLENBQUMsZUFBZSxLQUFLLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRyxRQUFPLEVBQUUsTUFBTSxTQUFTLEdBQUcsYUFBYSxHQUFHLEVBQUU7QUFFeEYsUUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUk7QUFDdkIsUUFBTSxVQUFVLENBQUM7QUFDakIsYUFBVyxTQUFTLE1BQU07QUFDeEIsVUFBTSxNQUFNLE1BQU0sUUFBUSxHQUFHO0FBQzdCLFFBQUksTUFBTSxFQUFHLE9BQU0sSUFBSSxNQUFNLGtFQUFrRSxLQUFLLEdBQUc7QUFDdkcsWUFBUSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxNQUFNLE1BQU0sTUFBTSxDQUFDO0FBQUEsRUFDcEQ7QUFDQSxTQUFPLEVBQUUsTUFBTSxRQUFRLEtBQUssUUFBUTtBQUN0QztBQUVBLGVBQWUsU0FBUyxNQUFNLFVBQVU7QUFDdEMsTUFBSTtBQUNGLFdBQU8sS0FBSyxNQUFNLE1BQU1ELFVBQVMsTUFBTSxPQUFPLENBQUM7QUFBQSxFQUNqRCxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVPLFNBQVMsZUFBZTtBQUM3QixTQUFPLFNBQVMsY0FBYyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUNsRDtBQUVBLGVBQXNCLGNBQWMsVUFBVTtBQUM1QyxZQUFVLFNBQVMsQ0FBQztBQUNwQixRQUFNQyxXQUFVLGNBQWMsR0FBRyxLQUFLLFVBQVUsVUFBVSxNQUFNLENBQUMsSUFBSSxJQUFJO0FBQzNFO0FBRUEsZUFBc0Isa0JBQWtCLE1BQU07QUFDNUMsUUFBTUMsVUFBUyxNQUFNLFNBQVMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELFNBQU8sRUFBRSxVQUFVQSxRQUFPLFlBQVksQ0FBQyxHQUFHLFNBQVNBLFFBQU8sV0FBVyxDQUFDLEVBQUU7QUFDMUU7QUFFQSxlQUFzQixtQkFBbUIsTUFBTUEsU0FBUTtBQUNyRCxZQUFVLFdBQVcsSUFBSSxDQUFDO0FBQzFCLFFBQU1ELFdBQVUsZUFBZSxJQUFJLEdBQUcsS0FBSyxVQUFVQyxTQUFRLE1BQU0sQ0FBQyxJQUFJLElBQUk7QUFDOUU7QUFFQSxlQUFzQixpQkFBaUIsRUFBRSxNQUFNLFdBQVcsTUFBTTtBQUFDLEVBQUUsR0FBRztBQUNwRSxRQUFNLFdBQVcsTUFBTSxhQUFhO0FBQ3BDLFFBQU0sZ0JBQWdCLE1BQU0sa0JBQWtCLElBQUk7QUFDbEQsUUFBTSxVQUFVLG9CQUFJLElBQUk7QUFFeEIsUUFBTSxXQUFXLENBQUMsTUFBTSxTQUFTQyxXQUFVO0FBQ3pDLFlBQVEsSUFBSSxNQUFNO0FBQUEsTUFDaEI7QUFBQSxNQUNBO0FBQUEsTUFDQSxPQUFBQTtBQUFBLE1BQ0EsU0FBUyxDQUFDLGNBQWMsU0FBUyxJQUFJO0FBQUEsTUFDckMsUUFBUSxjQUFjLFNBQVMsSUFBSSxJQUFJLGFBQWE7QUFBQSxNQUNwRCxPQUFPO0FBQUEsTUFDUCxZQUFZO0FBQUEsSUFDZCxDQUFDO0FBQUEsRUFDSDtBQUNBLGFBQVcsQ0FBQyxNQUFNLE9BQU8sS0FBSyxPQUFPLFFBQVEsU0FBUyxPQUFPLEVBQUcsVUFBUyxNQUFNLFNBQVMsUUFBUTtBQUNoRyxhQUFXLENBQUMsTUFBTSxPQUFPLEtBQUssT0FBTyxRQUFRLGNBQWMsT0FBTyxFQUFHLFVBQVMsTUFBTSxTQUFTLFNBQVM7QUFFdEcsaUJBQWUsaUJBQWlCLFNBQVM7QUFDdkMsVUFBTSxPQUFPLGdCQUFnQixPQUFPO0FBQ3BDLFFBQUksS0FBSyxTQUFTLFFBQVE7QUFDeEIsWUFBTSxFQUFFLDhCQUE4QixJQUFJLE1BQU0sT0FBTyxvREFBb0Q7QUFDM0csYUFBTyxNQUNMLElBQUksOEJBQThCLElBQUksSUFBSSxLQUFLLEdBQUcsR0FBRztBQUFBLFFBQ25ELGFBQWEsT0FBTyxLQUFLLEtBQUssT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEtBQUssUUFBUSxJQUFJO0FBQUEsTUFDOUUsQ0FBQztBQUFBLElBQ0w7QUFDQSxVQUFNLEVBQUUscUJBQXFCLElBQUksTUFBTSxPQUFPLDJDQUEyQztBQUN6RixXQUFPLE1BQ0wsSUFBSSxxQkFBcUI7QUFBQSxNQUN2QixTQUFTLEtBQUs7QUFBQSxNQUNkLE1BQU0sS0FBSztBQUFBLE1BQ1gsS0FBSyxFQUFFLEdBQUcsUUFBUSxLQUFLLEdBQUcsS0FBSyxJQUFJO0FBQUEsTUFDbkMsUUFBUTtBQUFBLElBQ1YsQ0FBQztBQUFBLEVBQ0w7QUFFQSxpQkFBZSxRQUFRLE1BQU07QUFDM0IsVUFBTSxTQUFTLFFBQVEsSUFBSSxJQUFJO0FBQy9CLFFBQUksQ0FBQyxPQUFRO0FBQ2IsV0FBTyxTQUFTO0FBQ2hCLFdBQU8sUUFBUTtBQUNmLGFBQVM7QUFDVCxRQUFJO0FBQ0YsYUFBTyxhQUFhLE1BQU0sV0FBVztBQUFBLFFBQ25DO0FBQUEsUUFDQSxXQUFXLE1BQU0saUJBQWlCLE9BQU8sT0FBTztBQUFBLE1BQ2xELENBQUM7QUFDRCxhQUFPLFNBQVM7QUFBQSxJQUNsQixTQUFTLEtBQUs7QUFDWixhQUFPLFNBQVM7QUFDaEIsYUFBTyxRQUFRLE9BQU8sSUFBSSxXQUFXLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRztBQUN0RCxhQUFPLGFBQWE7QUFBQSxJQUN0QjtBQUNBLGFBQVM7QUFBQSxFQUNYO0FBRUEsaUJBQWUsV0FBVyxNQUFNO0FBQzlCLFVBQU0sU0FBUyxRQUFRLElBQUksSUFBSTtBQUMvQixRQUFJLFFBQVEsWUFBWTtBQUN0QixZQUFNLE9BQU8sV0FBVyxNQUFNLEVBQUUsTUFBTSxNQUFNO0FBQUEsTUFBQyxDQUFDO0FBQzlDLGFBQU8sYUFBYTtBQUFBLElBQ3RCO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFBQSxJQUNMLGFBQWE7QUFDWCxZQUFNQyxXQUFVLENBQUM7QUFDakIsaUJBQVcsVUFBVSxRQUFRLE9BQU8sR0FBRztBQUNyQyxZQUFJLE9BQU8sUUFBUyxDQUFBQSxTQUFRLEtBQUssUUFBUSxPQUFPLElBQUksQ0FBQztBQUFBLE1BQ3ZEO0FBQ0EsYUFBTyxRQUFRLFdBQVdBLFFBQU87QUFBQSxJQUNuQztBQUFBLElBQ0EsTUFBTSxJQUFJLE1BQU0sU0FBU0QsU0FBUSxVQUFVO0FBQ3pDLFVBQUlBLFdBQVUsV0FBVztBQUN2QixjQUFNRCxVQUFTLE1BQU0sa0JBQWtCLElBQUk7QUFDM0MsUUFBQUEsUUFBTyxRQUFRLElBQUksSUFBSTtBQUN2QixjQUFNLG1CQUFtQixNQUFNQSxPQUFNO0FBQUEsTUFDdkMsT0FBTztBQUNMLGNBQU1HLFlBQVcsTUFBTSxhQUFhO0FBQ3BDLFFBQUFBLFVBQVMsUUFBUSxJQUFJLElBQUk7QUFDekIsY0FBTSxjQUFjQSxTQUFRO0FBQUEsTUFDOUI7QUFDQSxjQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sU0FBUyxPQUFBRixRQUFPLFNBQVMsTUFBTSxRQUFRLFFBQVEsT0FBTyxNQUFNLFlBQVksS0FBSyxDQUFDO0FBQ3hHLFlBQU0sUUFBUSxJQUFJO0FBQUEsSUFDcEI7QUFBQSxJQUNBLE1BQU0sT0FBTyxNQUFNO0FBQ2pCLFlBQU1BLFNBQVEsUUFBUSxJQUFJLElBQUksR0FBRztBQUNqQyxVQUFJQSxXQUFVLFdBQVc7QUFDdkIsY0FBTUQsVUFBUyxNQUFNLGtCQUFrQixJQUFJO0FBQzNDLGVBQU9BLFFBQU8sUUFBUSxJQUFJO0FBQzFCLGNBQU0sbUJBQW1CLE1BQU1BLE9BQU07QUFBQSxNQUN2QyxPQUFPO0FBQ0wsY0FBTUcsWUFBVyxNQUFNLGFBQWE7QUFDcEMsZUFBT0EsVUFBUyxRQUFRLElBQUk7QUFDNUIsY0FBTSxjQUFjQSxTQUFRO0FBQUEsTUFDOUI7QUFDQSxZQUFNLFdBQVcsSUFBSTtBQUNyQixjQUFRLE9BQU8sSUFBSTtBQUNuQixlQUFTO0FBQUEsSUFDWDtBQUFBLElBQ0EsTUFBTSxPQUFPLE1BQU07QUFDakIsWUFBTSxTQUFTLFFBQVEsSUFBSSxJQUFJO0FBQy9CLFVBQUksQ0FBQyxPQUFRO0FBQ2IsWUFBTUgsVUFBUyxNQUFNLGtCQUFrQixJQUFJO0FBQzNDLFVBQUksT0FBTyxTQUFTO0FBQ2xCLGVBQU8sVUFBVTtBQUNqQixlQUFPLFNBQVM7QUFDaEIsUUFBQUEsUUFBTyxTQUFTLElBQUksSUFBSTtBQUN4QixjQUFNLG1CQUFtQixNQUFNQSxPQUFNO0FBQ3JDLGNBQU0sV0FBVyxJQUFJO0FBQ3JCLGlCQUFTO0FBQUEsTUFDWCxPQUFPO0FBQ0wsZUFBTyxVQUFVO0FBQ2pCLGVBQU9BLFFBQU8sU0FBUyxJQUFJO0FBQzNCLGNBQU0sbUJBQW1CLE1BQU1BLE9BQU07QUFDckMsY0FBTSxRQUFRLElBQUk7QUFBQSxNQUNwQjtBQUFBLElBQ0Y7QUFBQSxJQUNBLFVBQVUsTUFBTTtBQUNkLGFBQU8sV0FBVyxJQUFJLEVBQUUsS0FBSyxNQUFNLFFBQVEsSUFBSSxDQUFDO0FBQUEsSUFDbEQ7QUFBQSxJQUNBLE9BQU87QUFDTCxhQUFPLENBQUMsR0FBRyxRQUFRLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPO0FBQUEsUUFDdkMsTUFBTSxFQUFFO0FBQUEsUUFDUixTQUFTLEVBQUU7QUFBQSxRQUNYLE9BQU8sRUFBRTtBQUFBLFFBQ1QsU0FBUyxFQUFFO0FBQUEsUUFDWCxRQUFRLEVBQUU7QUFBQSxRQUNWLE9BQU8sRUFBRTtBQUFBLFFBQ1QsV0FBVyxFQUFFLFlBQVksTUFBTSxVQUFVO0FBQUEsUUFDekMsUUFBUSxFQUFFLFlBQVksU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLEVBQUUsZUFBZSxHQUFHLEVBQUU7QUFBQSxNQUNwRyxFQUFFO0FBQUEsSUFDSjtBQUFBLElBQ0EsUUFBUTtBQUNOLGFBQU8sQ0FBQyxHQUFHLFFBQVEsT0FBTyxDQUFDLEVBQ3hCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUMxQixRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsS0FBSztBQUFBLElBQ3RDO0FBQUEsSUFDQSxNQUFNLFdBQVc7QUFDZixpQkFBVyxRQUFRLFFBQVEsS0FBSyxFQUFHLE9BQU0sV0FBVyxJQUFJO0FBQUEsSUFDMUQ7QUFBQSxFQUNGO0FBQ0Y7QUFyTkE7QUFBQTtBQUVBO0FBQUE7QUFBQTs7O0FDRkEsU0FBUyxZQUFBSSxXQUFVLFdBQUFDLFVBQVMsYUFBQUMsWUFBVyxhQUFhO0FBQ3BELFNBQVMsUUFBQUMsYUFBWTtBQUlkLFNBQVMsa0JBQWtCO0FBQ2hDLFNBQU9BLE1BQUssU0FBUyxHQUFHLFFBQVE7QUFDbEM7QUFFTyxTQUFTLGlCQUFpQixNQUFNO0FBQ3JDLFNBQU9BLE1BQUssV0FBVyxJQUFJLEdBQUcsUUFBUTtBQUN4QztBQUVPLFNBQVMsUUFBUSxNQUFNO0FBQzVCLFFBQU0sT0FBTyxPQUFPLElBQUksRUFDckIsWUFBWSxFQUNaLFFBQVEsZUFBZSxHQUFHLEVBQzFCLFFBQVEsWUFBWSxFQUFFLEVBQ3RCLE1BQU0sR0FBRyxFQUFFO0FBQ2QsTUFBSSxDQUFDLEtBQU0sT0FBTSxJQUFJLE1BQU0sNkNBQTZDO0FBQ3hFLFNBQU87QUFDVDtBQUVBLGVBQWVDLFNBQVEsS0FBS0MsUUFBTztBQUNqQyxNQUFJLFFBQVEsQ0FBQztBQUNiLE1BQUk7QUFDRixZQUFRLE1BQU1KLFNBQVEsR0FBRztBQUFBLEVBQzNCLFFBQVE7QUFDTixXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0EsUUFBTSxXQUFXLENBQUM7QUFDbEIsYUFBVyxRQUFRLE9BQU87QUFDeEIsUUFBSSxDQUFDLEtBQUssU0FBUyxLQUFLLEVBQUc7QUFDM0IsUUFBSTtBQUNGLFlBQU0sRUFBRSxNQUFNLEtBQUssSUFBSSxpQkFBaUIsTUFBTUQsVUFBU0csTUFBSyxLQUFLLElBQUksR0FBRyxPQUFPLENBQUM7QUFDaEYsZUFBUyxLQUFLO0FBQUEsUUFDWixNQUFNLEtBQUssUUFBUSxLQUFLLE1BQU0sR0FBRyxFQUFFO0FBQUEsUUFDbkMsYUFBYSxLQUFLLGVBQWU7QUFBQSxRQUNqQyxPQUFBRTtBQUFBLFFBQ0EsTUFBTUYsTUFBSyxLQUFLLElBQUk7QUFBQSxRQUNwQixNQUFNLEtBQUssS0FBSztBQUFBLE1BQ2xCLENBQUM7QUFBQSxJQUNILFFBQVE7QUFBQSxJQUFDO0FBQUEsRUFDWDtBQUNBLFNBQU87QUFDVDtBQUVPLFNBQVMsYUFBYSxNQUFNO0FBQ2pDLFFBQU0sU0FBUyxDQUFDRSxXQUFXQSxXQUFVLFdBQVcsZ0JBQWdCLElBQUksaUJBQWlCLElBQUk7QUFFekYsU0FBTztBQUFBLElBQ0wsTUFBTSxPQUFPO0FBQ1gsWUFBTSxTQUFTLE1BQU1ELFNBQVEsZ0JBQWdCLEdBQUcsUUFBUTtBQUN4RCxZQUFNLFVBQVUsTUFBTUEsU0FBUSxpQkFBaUIsSUFBSSxHQUFHLFNBQVM7QUFDL0QsYUFBTyxDQUFDLEdBQUcsU0FBUyxHQUFHLE1BQU07QUFBQSxJQUMvQjtBQUFBLElBQ0EsTUFBTSxTQUFTLEVBQUUsTUFBTSxhQUFhLFNBQVMsT0FBQUMsU0FBUSxVQUFVLEdBQUc7QUFDaEUsVUFBSSxDQUFDLENBQUMsV0FBVyxRQUFRLEVBQUUsU0FBU0EsTUFBSyxFQUFHLE9BQU0sSUFBSSxNQUFNLGlDQUFpQztBQUM3RixZQUFNLE9BQU8sUUFBUSxJQUFJO0FBQ3pCLFlBQU0sTUFBTSxPQUFPQSxNQUFLO0FBQ3hCLFlBQU0sTUFBTSxLQUFLLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFDcEMsWUFBTSxPQUFPRixNQUFLLEtBQUssR0FBRyxJQUFJLEtBQUs7QUFDbkMsWUFBTSxPQUFPO0FBQUEsUUFBYyxJQUFJO0FBQUEsZUFBa0IsT0FBTyxXQUFXLEVBQUUsUUFBUSxPQUFPLEdBQUcsQ0FBQztBQUFBO0FBQUEsRUFBVSxPQUFPO0FBQUE7QUFDekcsWUFBTUQsV0FBVSxNQUFNLE1BQU0sT0FBTztBQUNuQyxhQUFPLEVBQUUsTUFBTSxNQUFNLE9BQUFHLFFBQU8sS0FBSztBQUFBLElBQ25DO0FBQUEsSUFDQSxNQUFNLE9BQU8sTUFBTTtBQUNqQixZQUFNLFdBQVcsTUFBTSxLQUFLLEtBQUs7QUFDakMsWUFBTSxTQUFTLFNBQVMsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUk7QUFDbkQsVUFBSSxDQUFDLFFBQVE7QUFDWCxjQUFNLFFBQVEsU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLElBQUksS0FBSztBQUN4RCxjQUFNLElBQUksTUFBTSxvQkFBb0IsSUFBSSxzQkFBc0IsS0FBSyxFQUFFO0FBQUEsTUFDdkU7QUFDQSxhQUFPLEVBQUUsTUFBTSxPQUFPLE1BQU0sT0FBTyxPQUFPLE9BQU8sTUFBTSxPQUFPLE1BQU0sU0FBUyxPQUFPLEtBQUs7QUFBQSxJQUMzRjtBQUFBLEVBQ0Y7QUFDRjtBQUVPLFNBQVMsWUFBWSxVQUFVLE1BQU07QUFDMUMsTUFBSSxTQUFTLFdBQVcsR0FBRztBQUN6QixXQUFPO0FBQUEsRUFDVDtBQUNBLFFBQU0sUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxJQUFJLEtBQUssRUFBRSxLQUFLLE1BQU0sRUFBRSxXQUFXLEVBQUU7QUFDOUUsU0FBTztBQUFBLElBQ0wsdU9BQXVPLGlCQUFpQixJQUFJLENBQUMsUUFBUSxnQkFBZ0IsQ0FBQztBQUFBLElBQ3RSLEdBQUc7QUFBQSxFQUNMLEVBQUUsS0FBSyxJQUFJO0FBQ2I7QUF2RkE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBOzs7QUNIQSxTQUFTLFdBQUFDLGdCQUFlO0FBUXhCLGVBQXNCLGlCQUFpQixLQUFLLEVBQUUsY0FBYyxNQUFNO0FBQUMsRUFBRSxJQUFJLENBQUMsR0FBRztBQUMzRSxRQUFNLE9BQU9BLFNBQVE7QUFDckIsUUFBTSxPQUFPLGdCQUFnQixHQUFHO0FBQ2hDLFFBQU0saUJBQWlCLG1CQUFtQixHQUFHO0FBQzdDLFFBQU0sVUFBVSxxQkFBcUI7QUFBQSxJQUNuQyxTQUFTLGVBQWU7QUFBQSxJQUN4QixRQUFRLElBQUksSUFBSSxlQUFlLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7QUFBQSxFQUN6RCxDQUFDO0FBQ0QsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBO0FBQUEsSUFDQSxZQUFZLElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxRQUFRLE1BQU0sR0FBRyxJQUFJO0FBQUEsSUFDNUQ7QUFBQSxJQUNBO0FBQUEsSUFDQSxRQUFRLE1BQU0saUJBQWlCLElBQUk7QUFBQSxJQUNuQyxVQUFVLE1BQU0sbUJBQW1CLElBQUk7QUFBQSxJQUN2QyxLQUFLLE1BQU0saUJBQWlCLEVBQUUsTUFBTSxVQUFVLFlBQVksQ0FBQztBQUFBLElBQzNELFFBQVEsYUFBYSxJQUFJO0FBQUEsRUFDM0I7QUFDRjtBQTNCQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTs7O0FDTkEsU0FBUyxhQUFhO0FBSWYsU0FBUyxtQkFBbUIsRUFBRSxXQUFXLE1BQU07QUFBQyxHQUFHLFNBQVMsTUFBTTtBQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUc7QUFDbEYsUUFBTUMsVUFBUyxvQkFBSSxJQUFJO0FBQ3ZCLE1BQUksU0FBUztBQUViLFdBQVMsV0FBVyxPQUFPO0FBQ3pCLFdBQU87QUFBQSxNQUNMLElBQUksTUFBTTtBQUFBLE1BQ1YsU0FBUyxNQUFNO0FBQUEsTUFDZixLQUFLLE1BQU07QUFBQSxNQUNYLFFBQVEsTUFBTTtBQUFBLE1BQ2QsVUFBVSxNQUFNO0FBQUEsTUFDaEIsV0FBVyxNQUFNO0FBQUEsTUFDakIsU0FBUyxNQUFNO0FBQUEsTUFDZixVQUFVLE1BQU07QUFBQSxNQUNoQixVQUFVLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSztBQUFBLE1BQ2hDLFdBQVcsTUFBTSxNQUFNO0FBQUEsSUFDekI7QUFBQSxFQUNGO0FBRUEsV0FBUyxNQUFNLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHO0FBQ3BDLFVBQU0sS0FBSyxPQUFPLFFBQVE7QUFDMUIsVUFBTSxRQUFRLE1BQU0sU0FBUztBQUFBLE1BQzNCLE9BQU87QUFBQSxNQUNQLEtBQUssT0FBTyxRQUFRLElBQUk7QUFBQSxNQUN4QixLQUFLLEVBQUUsR0FBRyxRQUFRLEtBQUssYUFBYSxLQUFLLFVBQVUsSUFBSTtBQUFBLE1BQ3ZELE9BQU8sQ0FBQyxVQUFVLFFBQVEsTUFBTTtBQUFBLElBQ2xDLENBQUM7QUFDRCxVQUFNLFFBQVE7QUFBQSxNQUNaO0FBQUEsTUFDQTtBQUFBLE1BQ0EsS0FBSyxPQUFPLFFBQVEsSUFBSTtBQUFBLE1BQ3hCO0FBQUEsTUFDQSxRQUFRO0FBQUEsTUFDUixVQUFVO0FBQUEsTUFDVixXQUFXLEtBQUssSUFBSTtBQUFBLE1BQ3BCLFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLE9BQU8sQ0FBQztBQUFBLE1BQ1IsU0FBUztBQUFBLElBQ1g7QUFFQSxVQUFNLE9BQU8sQ0FBQyxVQUFVO0FBQ3RCLFlBQU0sT0FBTyxNQUFNLFVBQVUsTUFBTSxTQUFTO0FBQzVDLFlBQU0sUUFBUSxLQUFLLE1BQU0sSUFBSTtBQUM3QixZQUFNLFVBQVUsTUFBTSxJQUFJLEtBQUs7QUFDL0IsWUFBTSxNQUFNLEtBQUssR0FBRyxLQUFLO0FBQ3pCLFVBQUksTUFBTSxNQUFNLFNBQVMsVUFBVyxPQUFNLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxTQUFTLFNBQVM7QUFDeEYsZUFBUztBQUFBLElBQ1g7QUFDQSxVQUFNLE9BQU8sR0FBRyxRQUFRLElBQUk7QUFDNUIsVUFBTSxPQUFPLEdBQUcsUUFBUSxJQUFJO0FBQzVCLFVBQU0sR0FBRyxTQUFTLENBQUMsUUFBUTtBQUN6QixXQUFLLHFCQUFxQixJQUFJLE9BQU87QUFBQSxDQUFLO0FBQUEsSUFDNUMsQ0FBQztBQUNELFVBQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxXQUFXO0FBQ2pDLFVBQUksTUFBTSxTQUFTO0FBQ2pCLGNBQU0sTUFBTSxLQUFLLE1BQU0sT0FBTztBQUM5QixjQUFNLFVBQVU7QUFBQSxNQUNsQjtBQUNBLFlBQU0sU0FBUztBQUNmLFlBQU0sV0FBVyxTQUFTLFNBQVMsSUFBSTtBQUN2QyxZQUFNLFVBQVUsS0FBSyxJQUFJO0FBQ3pCLGVBQVM7QUFDVCxhQUFPLFdBQVcsS0FBSyxDQUFDO0FBQUEsSUFDMUIsQ0FBQztBQUVELElBQUFBLFFBQU8sSUFBSSxJQUFJLEtBQUs7QUFDcEIsYUFBUztBQUNULFdBQU8sRUFBRSxHQUFHO0FBQUEsRUFDZDtBQUVBLFdBQVMsSUFBSSxJQUFJO0FBQ2YsVUFBTSxRQUFRQSxRQUFPLElBQUksT0FBTyxFQUFFLENBQUM7QUFDbkMsUUFBSSxDQUFDLE1BQU8sT0FBTSxJQUFJLE1BQU0sb0JBQW9CLEVBQUUsK0VBQStFO0FBQ2pJLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLE9BQU8sSUFBSSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRztBQUM5QixZQUFNLFFBQVEsSUFBSSxFQUFFO0FBQ3BCLGFBQU87QUFBQSxRQUNMLElBQUksTUFBTTtBQUFBLFFBQ1YsU0FBUyxNQUFNO0FBQUEsUUFDZixRQUFRLE1BQU07QUFBQSxRQUNkLFVBQVUsTUFBTTtBQUFBLFFBQ2hCLFFBQVEsTUFBTSxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJO0FBQUEsUUFDMUMsWUFBWSxNQUFNLE1BQU07QUFBQSxNQUMxQjtBQUFBLElBQ0Y7QUFBQSxJQUNBLEtBQUssSUFBSSxLQUFLLFNBQVM7QUFDckIsWUFBTSxRQUFRLElBQUksRUFBRTtBQUNwQixVQUFJLE1BQU0sV0FBVyxVQUFXLFFBQU8sRUFBRSxJQUFJLE1BQU0sSUFBSSxRQUFRLE1BQU0sUUFBUSxVQUFVLE1BQU0sU0FBUztBQUN0RyxZQUFNLFdBQVc7QUFDakIsWUFBTSxNQUFNLEtBQUssU0FBUztBQUMxQixpQkFBVyxNQUFNO0FBQ2YsWUFBSSxNQUFNLFdBQVcsVUFBVyxPQUFNLE1BQU0sS0FBSyxTQUFTO0FBQUEsTUFDNUQsR0FBRyxHQUFJLEVBQUUsTUFBTTtBQUNmLGFBQU8sRUFBRSxJQUFJLE1BQU0sSUFBSSxRQUFRLFVBQVU7QUFBQSxJQUMzQztBQUFBLElBQ0EsUUFBUSxJQUFJO0FBQ1YsWUFBTSxRQUFRQSxRQUFPLElBQUksT0FBTyxFQUFFLENBQUM7QUFDbkMsVUFBSSxTQUFTLE1BQU0sV0FBVyxVQUFVO0FBQ3RDLFFBQUFBLFFBQU8sT0FBTyxPQUFPLEVBQUUsQ0FBQztBQUN4QixpQkFBUztBQUFBLE1BQ1g7QUFBQSxJQUNGO0FBQUEsSUFDQSxPQUFPO0FBQ0wsYUFBTyxDQUFDLEdBQUdBLFFBQU8sT0FBTyxDQUFDLEVBQUUsSUFBSSxVQUFVO0FBQUEsSUFDNUM7QUFBQSxJQUNBLFVBQVU7QUFDUixhQUFPLENBQUMsR0FBR0EsUUFBTyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsU0FBUyxFQUFFO0FBQUEsSUFDcEU7QUFBQSxJQUNBLFVBQVU7QUFDUixpQkFBVyxTQUFTQSxRQUFPLE9BQU8sR0FBRztBQUNuQyxZQUFJLE1BQU0sV0FBVyxXQUFXO0FBQzlCLGdCQUFNLFdBQVc7QUFDakIsY0FBSTtBQUNGLGtCQUFNLE1BQU0sS0FBSyxTQUFTO0FBQUEsVUFDNUIsUUFBUTtBQUFBLFVBQUM7QUFBQSxRQUNYO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFoSUEsSUFFTTtBQUZOO0FBQUE7QUFFQSxJQUFNLFlBQVk7QUFBQTtBQUFBOzs7QUNGbEIsU0FBUyxrQkFBa0I7QUFJcEIsU0FBUyxVQUFVLE1BQU0sT0FBTyxDQUFDLEdBQUc7QUFDekMsU0FBTyxFQUFFLElBQUksV0FBVyxHQUFHLElBQUksS0FBSyxJQUFJLEdBQUcsTUFBTSxLQUFLO0FBQ3hEO0FBRU8sU0FBUyxXQUFXLEVBQUUsS0FBSyxLQUFLLEdBQUc7QUFDeEMsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLElBQ1QsSUFBSSxXQUFXO0FBQUEsSUFDZjtBQUFBLElBQ0E7QUFBQSxJQUNBLFdBQVcsS0FBSyxJQUFJO0FBQUEsRUFDdEI7QUFDRjtBQUVPLFNBQVMsY0FBYyxPQUFPO0FBQ25DLFNBQU8sS0FBSyxVQUFVLEtBQUssSUFBSTtBQUNqQztBQUVPLFNBQVMsVUFBVSxNQUFNO0FBQzlCLFFBQU0sVUFBVSxLQUFLLEtBQUs7QUFDMUIsTUFBSSxDQUFDLFFBQVMsUUFBTztBQUNyQixNQUFJO0FBQ0YsVUFBTSxTQUFTLEtBQUssTUFBTSxPQUFPO0FBQ2pDLFdBQU8sVUFBVSxPQUFPLE9BQU8sU0FBUyxXQUFXLFNBQVM7QUFBQSxFQUM5RCxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVPLFNBQVMsV0FBVyxNQUFNO0FBQy9CLFNBQU8sS0FBSyxNQUFNLElBQUksRUFBRSxJQUFJLFNBQVMsRUFBRSxPQUFPLE9BQU87QUFDdkQ7QUFwQ0EsSUFFYTtBQUZiO0FBQUE7QUFFTyxJQUFNLGtCQUFrQjtBQUFBO0FBQUE7OztBQ0YvQixTQUFTLFlBQVksWUFBQUMsV0FBVSxXQUFBQyxVQUFTLE1BQU0sY0FBYztBQUM1RCxTQUFTLFFBQUFDLGNBQVk7QUFJZCxTQUFTLGNBQWMsRUFBRSxLQUFLLEtBQUssR0FBRztBQUMzQyxRQUFNLFNBQVMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDO0FBQ3ZDLFFBQU0sT0FBT0EsT0FBSyxVQUFVLFlBQVksSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLEVBQUUsUUFBUTtBQUNwRSxRQUFNLFVBQVUsWUFBWSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVDLFVBQVEsT0FBTyxNQUFNO0FBQ3JCLFNBQU87QUFDVDtBQUVPLFNBQVMsWUFBWSxFQUFFLE1BQU0sT0FBTyxHQUFHO0FBQzVDLE1BQUksUUFBUSxRQUFRLFFBQVE7QUFDNUIsU0FBTztBQUFBLElBQ0wsSUFBSSxPQUFPO0FBQUEsSUFDWDtBQUFBLElBQ0E7QUFBQSxJQUNBLE9BQU8sT0FBTztBQUNaLGNBQVEsTUFBTSxLQUFLLE1BQU0sV0FBVyxNQUFNLGNBQWMsS0FBSyxDQUFDLENBQUM7QUFDL0QsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLFFBQVE7QUFDTixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLGVBQXNCLFlBQVksTUFBTTtBQUN0QyxRQUFNLFNBQVMsV0FBVyxNQUFNRixVQUFTLE1BQU0sT0FBTyxDQUFDO0FBQ3ZELFFBQU0sU0FBUyxPQUFPLENBQUMsR0FBRyxTQUFTLFlBQVksT0FBTyxNQUFNLElBQUk7QUFDaEUsTUFBSSxDQUFDLE9BQVEsT0FBTSxJQUFJLE1BQU0sNEJBQTRCLElBQUksRUFBRTtBQUMvRCxTQUFPLEVBQUUsUUFBUSxPQUFPO0FBQzFCO0FBRUEsZUFBZSxZQUFZLE1BQU07QUFDL0IsUUFBTSxDQUFDLE1BQU0sTUFBTSxJQUFJLE1BQU0sUUFBUSxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUdBLFVBQVMsTUFBTSxPQUFPLENBQUMsQ0FBQztBQUM5RSxRQUFNLFFBQVEsT0FBTyxNQUFNLElBQUk7QUFDL0IsUUFBTSxTQUFTLFVBQVUsTUFBTSxDQUFDLENBQUM7QUFDakMsTUFBSSxDQUFDLFVBQVUsT0FBTyxTQUFTLFVBQVcsUUFBTztBQUNqRCxNQUFJLFFBQVE7QUFDWixNQUFJLFFBQVE7QUFDWixNQUFJLFFBQVE7QUFDWixhQUFXLFFBQVEsTUFBTSxNQUFNLENBQUMsR0FBRztBQUNqQyxVQUFNLFFBQVEsVUFBVSxJQUFJO0FBQzVCLFFBQUksQ0FBQyxNQUFPO0FBQ1osUUFBSSxNQUFNLFNBQVMsUUFBUyxTQUFRLE1BQU0sS0FBSztBQUMvQyxRQUFJLE1BQU0sU0FBUyxRQUFTLFNBQVEsTUFBTSxLQUFLO0FBQy9DLFFBQUksTUFBTSxTQUFTLGFBQWEsTUFBTSxLQUFLLFNBQVMsU0FBUyxRQUFRO0FBQ25FO0FBQ0EsWUFBTSxVQUFVLE1BQU0sS0FBSyxRQUFRO0FBQ25DLFlBQU0sT0FBTyxNQUFNLFFBQVEsT0FBTyxJQUM5QixRQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLElBQ3BFLE9BQU8sT0FBTztBQUNsQixVQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRyxTQUFRLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxHQUFHO0FBQUEsSUFDN0Q7QUFBQSxFQUNGO0FBQ0EsTUFBSSxDQUFDLE1BQU8sUUFBTztBQUNuQixTQUFPLEVBQUUsTUFBTSxRQUFRLE9BQU8sT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRO0FBQy9EO0FBRUEsZUFBZSxRQUFRLEtBQUs7QUFDMUIsTUFBSTtBQUNGLFVBQU0sUUFBUSxNQUFNQyxTQUFRLEdBQUc7QUFDL0IsV0FBTyxNQUFNLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTUMsT0FBSyxLQUFLLENBQUMsQ0FBQztBQUFBLEVBQzFFLFFBQVE7QUFDTixXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0Y7QUFFTyxTQUFTLGNBQWMsTUFBTTtBQUNsQyxTQUFPLE9BQU8sSUFBSTtBQUNwQjtBQUVBLGVBQXNCLGFBQWEsRUFBRSxPQUFBQyxRQUFPLEtBQUssR0FBRztBQUNsRCxNQUFJLFFBQVEsQ0FBQztBQUNiLE1BQUlBLFdBQVUsY0FBYztBQUMxQixVQUFNLGNBQWNELE9BQUssU0FBUyxHQUFHLFVBQVU7QUFDL0MsUUFBSSxXQUFXLENBQUM7QUFDaEIsUUFBSTtBQUNGLGlCQUFXLE1BQU1ELFNBQVEsV0FBVztBQUFBLElBQ3RDLFFBQVE7QUFBQSxJQUFDO0FBQ1QsVUFBTSxTQUFTLE1BQU0sUUFBUTtBQUFBLE1BQzNCLFNBQVMsSUFBSSxDQUFDLE1BQU0sUUFBUUMsT0FBSyxhQUFhLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFBQSxJQUMvRDtBQUNBLFlBQVEsT0FBTyxLQUFLO0FBQUEsRUFDdEIsT0FBTztBQUNMLFlBQVEsTUFBTSxRQUFRLFlBQVksSUFBSSxDQUFDO0FBQUEsRUFDekM7QUFDQSxRQUFNLFFBQVEsTUFBTSxRQUFRLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUMsRUFBRSxNQUFNLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDbEYsU0FBTyxNQUFNLE9BQU8sT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUN6RDtBQTVGQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7OztBQ0hPLFNBQVMsaUJBQWlCLHFCQUFxQixJQUFJO0FBQ3hELE1BQUksU0FBUztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQmIsTUFBSSxtQkFBbUIsS0FBSyxHQUFHO0FBQzdCLGNBQVU7QUFBQTtBQUFBO0FBQUEsRUFBaUMsbUJBQW1CLEtBQUssQ0FBQztBQUFBLEVBQ3RFO0FBQ0EsU0FBTztBQUNUO0FBRU8sU0FBUyxxQkFBcUIsS0FBSztBQUN4QyxNQUFJLFlBQVksSUFBSSxRQUFRLGtDQUFrQyxFQUFFO0FBQ2hFLFFBQU0sUUFBUSxVQUFVLE1BQU0sZ0NBQWdDO0FBQzlELE1BQUksTUFBTyxhQUFZLE1BQU0sQ0FBQztBQUM5QixTQUFPLFVBQVUsUUFBUSxVQUFVLE1BQU0sRUFBRSxLQUFLO0FBQ2xEO0FBRU8sU0FBUyxvQkFBb0IsU0FBUyxFQUFFLGFBQWEsV0FBVyxJQUFJLENBQUMsR0FBRztBQUM3RSxNQUFJLE9BQU87QUFBQTtBQUFBLEVBQWlJLE9BQU87QUFDbkosTUFBSSxhQUFhO0FBQ2YsWUFBUTtBQUFBO0FBQUEsc0RBQTJELFdBQVc7QUFBQSxFQUNoRjtBQUNBLE1BQUksWUFBWTtBQUNkLFlBQVE7QUFBQTtBQUFBO0FBQUEsRUFDVjtBQUNBLFVBQVE7QUFBQTtBQUFBO0FBQ1IsU0FBTztBQUNUO0FBM0NBO0FBQUE7QUFBQTtBQUFBOzs7QUNJQSxTQUFTLGNBQWMsUUFBUTtBQUM3QixRQUFNLFdBQVcsb0JBQUksSUFBSTtBQUN6QixhQUFXLEtBQUssUUFBUTtBQUN0QixRQUFJLEVBQUUsU0FBUyxjQUFlLFVBQVMsSUFBSSxFQUFFLEtBQUssUUFBUTtBQUFBLEVBQzVEO0FBQ0EsU0FBTyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxZQUFZLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDO0FBQ3hFO0FBRUEsU0FBUyxXQUFXLFFBQVE7QUFDMUIsUUFBTSxVQUFVLG9CQUFJLElBQUk7QUFDeEIsUUFBTSxRQUFRLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckQsYUFBVyxVQUFVLGNBQWMsTUFBTSxHQUFHO0FBQzFDLFFBQUksQ0FBQyxlQUFlLFNBQVMsT0FBTyxLQUFLLElBQUksRUFBRztBQUNoRCxVQUFNLE9BQU8sTUFBTSxJQUFJLE9BQU8sS0FBSyxNQUFNO0FBQ3pDLFVBQU0sS0FBSyxNQUFNLElBQUksT0FBTyxFQUFFO0FBQzlCLFFBQUksU0FBUyxVQUFhLE9BQU8sT0FBVztBQUM1QyxhQUFTLElBQUksTUFBTSxJQUFJLElBQUksSUFBSyxTQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTtBQUFBLEVBQzFEO0FBQ0EsU0FBTztBQUNUO0FBRUEsU0FBUyxhQUFhLE9BQU8sT0FBTztBQUNsQyxRQUFNLGdCQUFnQixNQUFNLGdCQUFnQjtBQUM1QyxRQUFNLG9CQUFvQixNQUFNLG9CQUFvQjtBQUNwRCxRQUFNLGVBQWUsTUFBTSxlQUFlO0FBQzFDLFFBQU0sZ0JBQWdCLE1BQU0sZ0JBQWdCO0FBQzVDLFFBQU0saUJBQWlCLE1BQU0saUJBQWlCO0FBQ2hEO0FBRUEsU0FBUyxhQUFhO0FBQ3BCLFNBQU8sRUFBRSxjQUFjLEdBQUcsa0JBQWtCLEdBQUcsYUFBYSxHQUFHLGNBQWMsR0FBRyxlQUFlLEVBQUU7QUFDbkc7QUFFQSxTQUFTRSxXQUFVLEtBQUs7QUFDdEIsTUFBSTtBQUNGLFdBQU8sS0FBSyxNQUFNLEdBQUc7QUFBQSxFQUN2QixRQUFRO0FBQ04sV0FBTyxFQUFFLE1BQU0sSUFBSTtBQUFBLEVBQ3JCO0FBQ0Y7QUFFQSxTQUFTLFlBQVksT0FBTyxTQUFTLFNBQVM7QUFDNUMsUUFBTSxnQkFBZ0IsS0FBSyxPQUFPO0FBQ2xDLFFBQU0sZ0JBQWdCLEtBQUssT0FBTztBQUNwQztBQUVBLFNBQVMsWUFBWSxPQUFPLE9BQU87QUFDakMsUUFBTSxVQUFVLE1BQU0sS0FBSztBQUMzQixNQUFJLENBQUMsV0FBVyxRQUFRLFNBQVMsU0FBVTtBQUMzQyxjQUFZLE9BQU8sU0FBUyxNQUFNLEVBQUU7QUFFcEMsTUFBSSxRQUFRLFNBQVMsUUFBUTtBQUMzQixVQUFNLE9BQU8sTUFBTSxRQUFRLFFBQVEsT0FBTyxJQUN0QyxRQUFRLFFBQ0wsSUFBSSxDQUFDLE1BQU8sRUFBRSxTQUFTLFNBQVMsRUFBRSxPQUFPLFdBQVcsT0FBTyxFQUFFLFFBQVEsUUFBUSxFQUFFLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxLQUFLLFVBQVUsR0FBSSxFQUNuSCxLQUFLLEVBQUUsSUFDVixPQUFPLFFBQVEsT0FBTztBQUMxQixVQUFNLFdBQVcsS0FBSyxFQUFFLE1BQU0sUUFBUSxNQUFNLFNBQVMsUUFBUSxTQUFTLFNBQVMsTUFBTSxHQUFHLENBQUM7QUFDekY7QUFBQSxFQUNGO0FBQ0EsTUFBSSxRQUFRLFNBQVMsYUFBYTtBQUNoQyxRQUFJLFFBQVEsU0FBUztBQUNuQixZQUFNLFdBQVcsS0FBSyxFQUFFLE1BQU0sYUFBYSxNQUFNLFFBQVEsU0FBUyxPQUFPLE1BQU0sTUFBTSxDQUFDO0FBQUEsSUFDeEY7QUFDQSxlQUFXLFFBQVEsUUFBUSxjQUFjLENBQUMsR0FBRztBQUMzQyxZQUFNLE9BQU87QUFBQSxRQUNYLE1BQU07QUFBQSxRQUNOLFFBQVEsS0FBSztBQUFBLFFBQ2IsTUFBTSxLQUFLLFNBQVM7QUFBQSxRQUNwQixNQUFNQSxXQUFVLEtBQUssU0FBUyxTQUFTO0FBQUEsUUFDdkMsT0FBTyxLQUFLLFNBQVM7QUFBQSxRQUNyQixRQUFRO0FBQUEsUUFDUixTQUFTLE1BQU07QUFBQSxNQUNqQjtBQUNBLFlBQU0sV0FBVyxLQUFLLElBQUk7QUFDMUIsWUFBTSxVQUFVLElBQUksS0FBSyxJQUFJLElBQUk7QUFBQSxJQUNuQztBQUNBO0FBQUEsRUFDRjtBQUNBLE1BQUksUUFBUSxTQUFTLFFBQVE7QUFDM0IsVUFBTSxPQUFPLE1BQU0sVUFBVSxJQUFJLFFBQVEsWUFBWTtBQUNyRCxRQUFJLEtBQU0sTUFBSyxhQUFhLE9BQU8sUUFBUSxPQUFPO0FBQUEsRUFDcEQ7QUFDRjtBQUVBLFNBQVMsV0FBVyxPQUFPLE9BQU87QUFDaEMsUUFBTSxFQUFFLE1BQU0sYUFBYSxXQUFXLENBQUMsRUFBRSxJQUFJLE1BQU07QUFDbkQsYUFBVyxVQUFVLFVBQVU7QUFDN0IsVUFBTSxPQUFPLE1BQU0sVUFBVSxJQUFJLE1BQU07QUFDdkMsUUFBSSxLQUFNLE1BQUssU0FBUztBQUFBLEVBQzFCO0FBQ0EsTUFBSSxTQUFTLGFBQWEsYUFBYTtBQUNyQyxVQUFNLFdBQVcsS0FBSyxFQUFFLE1BQU0sV0FBVyxRQUFRLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDOUUsZ0JBQVksT0FBTztBQUFBLE1BQ2pCLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxFQUEwQyxXQUFXO0FBQUEsSUFDaEUsR0FBRyxNQUFNLEVBQUU7QUFBQSxFQUNiO0FBQ0Y7QUFFTyxTQUFTLFlBQVksUUFBUTtBQUNsQyxRQUFNLFVBQVUsV0FBVyxNQUFNO0FBQ2pDLFFBQU0sc0JBQXNCLElBQUk7QUFBQSxJQUM5QixPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLFFBQVE7QUFBQSxFQUMzRTtBQUVBLFFBQU0sUUFBUTtBQUFBLElBQ1osWUFBWSxDQUFDO0FBQUEsSUFDYixpQkFBaUIsQ0FBQztBQUFBLElBQ2xCLGlCQUFpQixDQUFDO0FBQUEsSUFDbEIsT0FBTztBQUFBLElBQ1AsUUFBUTtBQUFBLElBQ1IsT0FBTyxXQUFXO0FBQUEsSUFDbEIsY0FBYyxDQUFDO0FBQUEsSUFDZixhQUFhLFdBQVc7QUFBQSxJQUN4QixvQkFBb0IsQ0FBQztBQUFBLElBQ3JCLGtCQUFrQjtBQUFBLElBQ2xCLGlCQUFpQjtBQUFBLElBQ2pCLGVBQWUsb0JBQUksSUFBSTtBQUFBLElBQ3ZCLFdBQVcsb0JBQUksSUFBSTtBQUFBLEVBQ3JCO0FBRUEsYUFBVyxTQUFTLFFBQVE7QUFDMUIsUUFBSSxNQUFNLFNBQVMsU0FBUztBQUMxQixtQkFBYSxNQUFNLE9BQU8sTUFBTSxLQUFLLEtBQUs7QUFDMUMsWUFBTSxVQUFXLE1BQU0sYUFBYSxNQUFNLEtBQUssS0FBSyxNQUFNLFdBQVc7QUFDckUsbUJBQWEsU0FBUyxNQUFNLEtBQUssS0FBSztBQUN0QyxVQUFJLENBQUMsUUFBUSxJQUFJLE1BQU0sRUFBRSxHQUFHO0FBQzFCLHFCQUFhLE1BQU0sYUFBYSxNQUFNLEtBQUssS0FBSztBQUNoRCxjQUFNLGdCQUFpQixNQUFNLG1CQUFtQixNQUFNLEtBQUssS0FBSyxNQUFNLFdBQVc7QUFDakYscUJBQWEsZUFBZSxNQUFNLEtBQUssS0FBSztBQUc1QyxZQUFJLE1BQU0sS0FBSyxlQUFlLFFBQVc7QUFDdkMsZ0JBQU0sbUJBQW1CLE1BQU0sS0FBSztBQUNwQyxnQkFBTSxrQkFBa0IsTUFBTSxLQUFLO0FBQUEsUUFDckM7QUFBQSxNQUNGO0FBQ0E7QUFBQSxJQUNGO0FBQ0EsUUFBSSxRQUFRLElBQUksTUFBTSxFQUFFLEVBQUc7QUFFM0IsWUFBUSxNQUFNLE1BQU07QUFBQSxNQUNsQixLQUFLO0FBQ0gsb0JBQVksT0FBTyxLQUFLO0FBQ3hCO0FBQUEsTUFDRixLQUFLLGFBQWE7QUFDaEIsY0FBTSxPQUFPLE1BQU0sVUFBVSxJQUFJLE1BQU0sS0FBSyxNQUFNO0FBQ2xELFlBQUksS0FBTSxRQUFPLE9BQU8sTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLFFBQVEsUUFBUSxLQUFLLE9BQU8sQ0FBQztBQUMvRTtBQUFBLE1BQ0Y7QUFBQSxNQUNBLEtBQUssYUFBYTtBQUNoQixjQUFNLE9BQU8sTUFBTSxXQUFXLEdBQUcsRUFBRTtBQUNuQyxZQUFJLE1BQU0sU0FBUyxZQUFhLE1BQUssY0FBYztBQUNuRCxZQUFJLE1BQU0sU0FBUyxVQUFVLEtBQUssV0FBVyxVQUFXLE1BQUssU0FBUztBQUN0RTtBQUFBLE1BQ0Y7QUFBQSxNQUNBLEtBQUs7QUFDSCxjQUFNLFFBQVEsTUFBTSxLQUFLO0FBQ3pCO0FBQUEsTUFDRixLQUFLO0FBQ0gsY0FBTSxTQUFTLE1BQU0sS0FBSztBQUMxQjtBQUFBLE1BQ0YsS0FBSztBQUNILGNBQU0sUUFBUSxNQUFNLEtBQUs7QUFDekI7QUFBQSxNQUNGLEtBQUs7QUFDSCxjQUFNLFFBQVEsTUFBTSxLQUFLO0FBQ3pCO0FBQUEsTUFDRixLQUFLO0FBQ0gsWUFBSSxDQUFDLG9CQUFvQixJQUFJLE1BQU0sRUFBRSxFQUFHLFlBQVcsT0FBTyxLQUFLO0FBQy9EO0FBQUEsTUFDRixLQUFLLFdBQVc7QUFDZCxjQUFNLEVBQUUsU0FBUyxVQUFVLFlBQVksSUFBSSxNQUFNO0FBQ2pELFlBQUksYUFBYSxVQUFhLGFBQWE7QUFDekMsZ0JBQU0sTUFBTSxXQUFXLE1BQU0sZ0JBQWdCLFFBQVEsUUFBUSxJQUFJO0FBQ2pFLGdCQUFNLE9BQU8sT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDNUQsZ0JBQU0sVUFBVSxPQUFPLElBQUksTUFBTSxnQkFBZ0IsTUFBTSxHQUFHLElBQUksQ0FBQztBQUMvRCxnQkFBTSxrQkFBa0I7QUFBQSxZQUN0QixFQUFFLE1BQU0sUUFBUSxTQUFTLG9CQUFvQixTQUFTLEVBQUUsYUFBYSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUMsRUFBRTtBQUFBLFlBQ3BHLEdBQUc7QUFBQSxVQUNMO0FBQ0EsZ0JBQU0sa0JBQWtCLENBQUMsTUFBTSxHQUFHLE9BQU87QUFBQSxRQUMzQyxPQUFPO0FBQ0wsZ0JBQU0sa0JBQWtCO0FBQUEsWUFDdEIsRUFBRSxNQUFNLFFBQVEsU0FBUztBQUFBLEVBQTJCLE9BQU8sR0FBRztBQUFBLFlBQzlELEVBQUUsTUFBTSxhQUFhLFNBQVMsd0NBQXdDO0FBQUEsVUFDeEU7QUFDQSxnQkFBTSxrQkFBa0IsQ0FBQyxNQUFNLElBQUk7QUFBQSxRQUNyQztBQUNBLGNBQU0sV0FBVyxLQUFLLEVBQUUsTUFBTSxXQUFXLFFBQVEsV0FBVyxNQUFNLFFBQVEsQ0FBQztBQUMzRSxjQUFNLG1CQUFtQjtBQUN6QjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLEtBQUs7QUFDSCxjQUFNLGFBQWEsQ0FBQztBQUNwQixjQUFNLGtCQUFrQixDQUFDO0FBQ3pCLGNBQU0sa0JBQWtCLENBQUM7QUFDekIsY0FBTSxZQUFZLG9CQUFJLElBQUk7QUFDMUIsY0FBTSxtQkFBbUI7QUFDekI7QUFBQSxNQUNGLEtBQUs7QUFDSCxjQUFNLGNBQWMsSUFBSSxNQUFNLEtBQUssSUFBSTtBQUN2QztBQUFBLE1BQ0YsS0FBSztBQUNILGNBQU0sV0FBVyxLQUFLLEVBQUUsTUFBTSxTQUFTLE1BQU0sTUFBTSxLQUFLLEtBQUssQ0FBQztBQUM5RDtBQUFBLE1BQ0YsS0FBSztBQUNILGNBQU0sV0FBVyxLQUFLLEVBQUUsTUFBTSxZQUFZLE1BQU0sTUFBTSxLQUFLLEtBQUssQ0FBQztBQUNqRTtBQUFBLE1BQ0YsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUNILG9CQUFZLE9BQU8sRUFBRSxNQUFNLFFBQVEsU0FBUyxNQUFNLEtBQUssS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUN2RSxjQUFNLFdBQVcsS0FBSyxFQUFFLE1BQU0sVUFBVSxNQUFNLE1BQU0sS0FBSyxLQUFLLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQzlFO0FBQUEsSUFDSjtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFFTyxTQUFTLFlBQVksT0FBTztBQUNqQyxRQUFNLFVBQVUsQ0FBQztBQUNqQixRQUFNLFdBQVcsUUFBUSxDQUFDLE1BQU0sVUFBVTtBQUN4QyxRQUFJLEtBQUssU0FBUyxPQUFRLFNBQVEsS0FBSyxFQUFFLE1BQU0sS0FBSyxNQUFNLFNBQVMsS0FBSyxTQUFTLE9BQU8sU0FBUyxLQUFLLFFBQVEsQ0FBQztBQUFBLEVBQ2pILENBQUM7QUFDRCxTQUFPO0FBQ1Q7QUFFTyxTQUFTLFlBQVksT0FBTyxPQUFPO0FBQ3hDLFFBQU0sT0FBTyxNQUFNLFdBQVcsTUFBTSxLQUFLO0FBQ3pDLFNBQU87QUFBQSxJQUNMLE1BQU0sS0FBSztBQUFBLElBQ1gsT0FBTyxLQUFLLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsVUFBVTtBQUFBLEVBQ3BGO0FBQ0Y7QUEvT0EsSUFFTTtBQUZOO0FBQUE7QUFBQTtBQUVBLElBQU0saUJBQWlCLENBQUMsUUFBUSxRQUFRLFNBQVM7QUFBQTtBQUFBOzs7QUNGakQsU0FBUyxZQUFBQyxrQkFBZ0I7QUFDekIsU0FBUyxTQUFTLE9BQU8sT0FBTyxlQUFlLFNBQVMsZUFBZTtBQUV2RSxlQUFlLFlBQVksTUFBTTtBQUMvQixNQUFJLEtBQUssU0FBUyxXQUFXLEtBQUssUUFBUSxTQUFTLE9BQVEsUUFBTztBQUNsRSxNQUFJO0FBQ0YsVUFBTSxPQUFPLE1BQU1BLFdBQVMsS0FBSyxPQUFPLElBQUk7QUFDNUMsV0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sUUFBUSxFQUFFLE1BQU0sVUFBVSxXQUFXLEtBQUssT0FBTyxXQUFXLE1BQU0sS0FBSyxTQUFTLFFBQVEsRUFBRTtBQUFBLElBQzVGO0FBQUEsRUFDRixRQUFRO0FBQ04sV0FBTyxFQUFFLE1BQU0sUUFBUSxNQUFNLHVCQUF1QixLQUFLLE9BQU8sSUFBSSxJQUFJO0FBQUEsRUFDMUU7QUFDRjtBQUVPLFNBQVMsY0FBYyxTQUFTO0FBQ3JDLFNBQU8sUUFBUTtBQUFBLElBQ2IsUUFBUTtBQUFBLE1BQUksT0FBTyxZQUNqQixNQUFNLFFBQVEsUUFBUSxPQUFPLElBQ3pCLEVBQUUsR0FBRyxTQUFTLFNBQVMsTUFBTSxRQUFRLElBQUksUUFBUSxRQUFRLElBQUksV0FBVyxDQUFDLEVBQUUsSUFDM0U7QUFBQSxJQUNOO0FBQUEsRUFDRjtBQUNGO0FBSUEsZUFBc0IsZUFBZSxFQUFFLFNBQVMsV0FBVyxNQUFNLFFBQVEsT0FBTyxHQUFHO0FBQ2pGLFFBQU0sTUFBTSxNQUFNO0FBQUEsSUFDaEIsTUFBTTtBQUFBLE1BQ0osT0FBTztBQUFBLE1BQ1AsR0FBSSxNQUFNLFVBQVUsRUFBRSxRQUFRLEtBQUssT0FBTztBQUFBLE1BQzFDLEdBQUksTUFBTSxXQUFXLEVBQUUsU0FBUyxLQUFLLFFBQVE7QUFBQSxJQUMvQyxDQUFDO0FBQUEsRUFDSCxFQUFFO0FBQUEsSUFDQSxTQUFTLENBQUMsR0FBRyxRQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxRQUFRLEdBQUcsRUFBRSxNQUFNLFFBQVEsU0FBUyxPQUFPLENBQUM7QUFBQSxJQUMxRixPQUFPLENBQUM7QUFBQSxJQUNSLGFBQWE7QUFBQSxFQUNmLENBQUM7QUFDRCxNQUFJLFFBQVEsUUFBUyxPQUFNLElBQUksTUFBTSxzQkFBc0I7QUFDM0QsU0FBTyxRQUFRLElBQUksY0FBYyxXQUFXLEVBQUUsRUFBRSxLQUFLO0FBQ3ZEO0FBRUEsZUFBc0IsY0FBYyxFQUFFLE1BQU0sVUFBVSxHQUFHO0FBQ3ZELFFBQU0sTUFBTSxNQUFNO0FBQUEsSUFDaEIsTUFBTTtBQUFBLE1BQ0osT0FBTztBQUFBLE1BQ1AsUUFBUTtBQUFBLElBQ1YsQ0FBQztBQUFBLEVBQ0gsRUFBRSxLQUFLLE1BQU0sR0FBRyxHQUFLLENBQUM7QUFDdEIsU0FBTyxRQUFRLElBQUksY0FBYyxXQUFXLEVBQUUsRUFBRSxLQUFLO0FBQ3ZEO0FBRUEsZUFBc0IsUUFBUSxFQUFFLFNBQVMsT0FBTyxVQUFVLFdBQVcsUUFBUSxNQUFNLFFBQVEsUUFBUSxVQUFVLFVBQVUsU0FBUyxHQUFHO0FBQ2pJLFFBQU0sWUFBWSxDQUFDO0FBQ25CLE1BQUksWUFBWTtBQUNoQixNQUFJLFlBQVk7QUFDaEIsTUFBSSxVQUFVO0FBSWQsTUFBSSxtQkFBbUI7QUFDdkIsTUFBSSxtQkFBbUI7QUFFdkIsUUFBTSxXQUFXLElBQUksZ0JBQWdCO0FBQ3JDLFFBQU0sY0FBYyxNQUFNLFNBQVMsTUFBTTtBQUN6QyxNQUFJLFFBQVEsUUFBUyxVQUFTLE1BQU07QUFBQSxNQUMvQixTQUFRLGlCQUFpQixTQUFTLGFBQWEsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUVsRSxNQUFJLFdBQVc7QUFDZixRQUFNLE1BQU0sTUFBTTtBQUNoQixpQkFBYSxRQUFRO0FBQ3JCLGVBQVcsV0FBVyxNQUFNO0FBQzFCLGdCQUFVO0FBQ1YsZUFBUyxNQUFNO0FBQUEsSUFDakIsR0FBRyxPQUFPO0FBQUEsRUFDWjtBQUVBLFFBQU0sU0FBUyxDQUFDLFVBQVU7QUFDeEIsUUFBSTtBQUNKLFFBQUksTUFBTSxTQUFTLFdBQVc7QUFDNUIsbUJBQWEsTUFBTTtBQUFBLElBQ3JCLFdBQVcsTUFBTSxTQUFTLG9CQUFvQjtBQUM1QyxnQkFBVSxLQUFLLEVBQUUsTUFBTSxhQUFhLFNBQVMsV0FBVyxZQUFZLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLGtCQUFZO0FBQUEsSUFDZCxXQUFXLE1BQU0sU0FBUyxrQkFBa0I7QUFDMUMsZUFBUyxjQUFjLE1BQU07QUFBQSxJQUMvQixXQUFXLE1BQU0sU0FBUyxpQkFBaUI7QUFDekMsZ0JBQVUsS0FBSyxFQUFFLE1BQU0sUUFBUSxjQUFjLE1BQU0sS0FBSyxJQUFJLFNBQVMsS0FBSyxVQUFVLE1BQU0sTUFBTSxFQUFFLENBQUM7QUFBQSxJQUNyRyxXQUFXLE1BQU0sU0FBUyxjQUFjO0FBQ3RDLGdCQUFVLEtBQUssRUFBRSxNQUFNLFFBQVEsY0FBYyxNQUFNLEtBQUssSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLE9BQU8sTUFBTSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQUEsSUFDL0csV0FBVyxNQUFNLFNBQVMsU0FBUztBQUNqQyxrQkFBWSxNQUFNO0FBQ2xCLFlBQU0sU0FBUyxNQUFNLE9BQU8sZ0JBQWdCO0FBQzVDLHlCQUFtQixLQUFLLElBQUksR0FBRyxTQUFTLGdCQUFnQjtBQUN4RCx5QkFBbUI7QUFBQSxJQUNyQjtBQUNBLGVBQVcsS0FBSztBQUFBLEVBQ2xCO0FBRUEsUUFBTSxPQUFPLFFBQVE7QUFDckIsUUFBTSxPQUFPO0FBQUEsSUFDWDtBQUFBLE1BQ0UsRUFBRSxTQUFTLFFBQVEsY0FBYyxRQUFRLE9BQU8sT0FBTyxjQUFjLEdBQUcsT0FBTztBQUFBLE1BQy9FLENBQUMsUUFDQyxNQUFNO0FBQUEsUUFDSixPQUFPO0FBQUEsUUFDUCxHQUFJLFVBQVUsRUFBRSxPQUFPO0FBQUEsUUFDdkIsR0FBSSxNQUFNLFVBQVUsRUFBRSxRQUFRLEtBQUssT0FBTztBQUFBLFFBQzFDLEdBQUksTUFBTSxXQUFXLEVBQUUsU0FBUyxLQUFLLFFBQVE7QUFBQSxNQUMvQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEtBQUssYUFBYSxTQUFTLE9BQU8sQ0FBQztBQUFBLElBQy9DO0FBQUEsRUFDRjtBQUVBLFFBQU0sa0JBQWtCLE1BQU07QUFDNUIsVUFBTSxXQUFXLENBQUMsR0FBRyxTQUFTO0FBQzlCLFFBQUksVUFBVyxVQUFTLEtBQUssRUFBRSxNQUFNLGFBQWEsU0FBUyxVQUFVLENBQUM7QUFDdEUsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJO0FBQ0osTUFBSTtBQUNGLFVBQU0sTUFBTSxNQUFNLEtBQUssRUFBRSxTQUFTLE1BQU0sY0FBYyxPQUFPLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUMzRSxVQUFNLGNBQWMsQ0FBQyxDQUFDLFFBQVEsV0FBVztBQUN6QyxRQUFJLGFBQWE7QUFDZixhQUFPLEVBQUUsVUFBVSxnQkFBZ0IsR0FBRyxPQUFPLFdBQVcsa0JBQWtCLGFBQWEsUUFBUTtBQUFBLElBQ2pHO0FBQ0EsVUFBTSxXQUFXLElBQUksUUFBUSxPQUFPLENBQUMsTUFBTSxFQUFFLFNBQVMsUUFBUSxFQUFFLE1BQU0sSUFBSTtBQUMxRSxXQUFPLEVBQUUsVUFBVSxPQUFPLElBQUksU0FBUyxNQUFNLGtCQUFrQixhQUFhLE9BQU8sU0FBUyxNQUFNO0FBQUEsRUFDcEcsU0FBUyxLQUFLO0FBQ1osUUFBSSxJQUFJLFNBQVMsZ0JBQWdCLFNBQVMsT0FBTyxTQUFTO0FBQ3hELGFBQU8sRUFBRSxVQUFVLGdCQUFnQixHQUFHLE9BQU8sV0FBVyxrQkFBa0IsYUFBYSxNQUFNLFFBQVE7QUFBQSxJQUN2RztBQUNBLFVBQU07QUFBQSxFQUNSLFVBQUU7QUFDQSxpQkFBYSxRQUFRO0FBQ3JCLFlBQVEsb0JBQW9CLFNBQVMsV0FBVztBQUFBLEVBQ2xEO0FBQ0Y7QUEzSUEsSUEwQk07QUExQk47QUFBQTtBQTBCQSxJQUFNLFdBQVc7QUFBQTtBQUFBOzs7QUMxQlYsU0FBUyxhQUFhLE1BQU0sT0FBTyxDQUFDLEdBQUc7QUFDNUMsUUFBTSxZQUFZLEtBQUssUUFBUSxLQUFLLFdBQVcsS0FBSyxXQUFXLEtBQUssT0FBTyxLQUFLO0FBQ2hGLE1BQUksT0FBTyxjQUFjLFlBQVksVUFBVyxRQUFPO0FBQ3ZELFFBQU0sTUFBTSxLQUFLLFVBQVUsSUFBSTtBQUMvQixNQUFJLENBQUMsT0FBTyxRQUFRLEtBQU0sUUFBTztBQUNqQyxTQUFPLElBQUksU0FBUyxLQUFLLElBQUksTUFBTSxHQUFHLEVBQUUsSUFBSSxXQUFNO0FBQ3BEO0FBRU8sU0FBUyxpQkFBaUI7QUFDL0IsU0FBTztBQUFBLElBQ0wsYUFBYTtBQUFBLElBQ2IsU0FBUyxDQUFDO0FBQUEsSUFDVixTQUFTO0FBQUEsSUFDVCxNQUFNLE1BQU0sTUFBTTtBQUNoQixXQUFLLFVBQVU7QUFBQSxRQUNiLFFBQVEsS0FBSyxhQUFhLE1BQU07QUFBQSxRQUNoQztBQUFBLFFBQ0EsT0FBTyxhQUFhLE1BQU0sSUFBSTtBQUFBLFFBQzlCLFFBQVE7QUFBQSxRQUNSLFdBQVcsS0FBSyxJQUFJO0FBQUEsTUFDdEI7QUFBQSxJQUNGO0FBQUEsSUFDQSxNQUFNLFFBQVE7QUFDWixVQUFJLEtBQUssUUFBUyxRQUFPLE9BQU8sS0FBSyxTQUFTLE1BQU07QUFBQSxJQUN0RDtBQUFBLElBQ0EsS0FBSyxTQUFTLENBQUMsR0FBRztBQUNoQixVQUFJLENBQUMsS0FBSyxRQUFTO0FBQ25CLGFBQU8sT0FBTyxLQUFLLFNBQVMsUUFBUTtBQUFBLFFBQ2xDLFlBQVksS0FBSyxJQUFJLElBQUksS0FBSyxRQUFRO0FBQUEsTUFDeEMsQ0FBQztBQUNELGFBQU8sS0FBSyxRQUFRO0FBQ3BCLFVBQUksS0FBSyxRQUFRLFlBQVksU0FBUyxLQUFRO0FBQzVDLGFBQUssUUFBUSxhQUFhLEtBQUssUUFBUSxXQUFXLE1BQU0sR0FBRyxHQUFNLElBQUk7QUFBQSxNQUN2RTtBQUNBLFdBQUssUUFBUSxLQUFLLEtBQUssT0FBTztBQUM5QixXQUFLLFVBQVU7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFDRjtBQUVPLFNBQVMsU0FBUyxVQUFVLE1BQU0sSUFBSTtBQUMzQyxTQUFPLE9BQU8sU0FBUztBQUNyQixhQUFTLE1BQU0sTUFBTSxJQUFJO0FBQ3pCLFFBQUk7QUFDRixZQUFNLFNBQVMsTUFBTSxHQUFHLElBQUk7QUFDNUIsVUFBSSxDQUFDLFNBQVMsU0FBUyxjQUFjLFdBQVcsUUFBVztBQUN6RCxpQkFBUyxNQUFNO0FBQUEsVUFDYixZQUFZLE9BQU8sV0FBVyxXQUFXLFNBQVMsS0FBSyxVQUFVLFFBQVEsTUFBTSxDQUFDO0FBQUEsUUFDbEYsQ0FBQztBQUFBLE1BQ0g7QUFDQSxlQUFTLEtBQUs7QUFDZCxhQUFPO0FBQUEsSUFDVCxTQUFTLEtBQUs7QUFDWixlQUFTLEtBQUssRUFBRSxRQUFRLFNBQVMsT0FBTyxPQUFPLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUNwRSxZQUFNO0FBQUEsSUFDUjtBQUFBLEVBQ0Y7QUFDRjtBQXpEQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUEsU0FBUyxZQUFBQyxrQkFBZ0I7QUFDekIsU0FBUyxXQUFBQyxnQkFBZTtBQUt4QixTQUFTLFNBQVMsUUFBUTtBQUN4QixRQUFNLE1BQU0sS0FBSyxJQUFJLE9BQU8sUUFBUSxHQUFJO0FBQ3hDLFdBQVMsSUFBSSxHQUFHLElBQUksS0FBSyxLQUFLO0FBQzVCLFFBQUksT0FBTyxDQUFDLE1BQU0sRUFBRyxRQUFPO0FBQUEsRUFDOUI7QUFDQSxTQUFPO0FBQ1Q7QUFFTyxTQUFTLFdBQVcsRUFBRSxLQUFLLFVBQVUsUUFBUSxHQUFHO0FBQ3JELFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLGFBQWE7QUFBQSxJQUNiLFFBQVE7QUFBQSxNQUNOLE1BQU0sRUFBRSxNQUFNLFVBQVUsYUFBYSwyREFBMkQ7QUFBQSxNQUNoRyxRQUFRLEVBQUUsTUFBTSxVQUFVLGFBQWEsZ0NBQWdDLFVBQVUsS0FBSztBQUFBLE1BQ3RGLE9BQU8sRUFBRSxNQUFNLFVBQVUsYUFBYSx1QkFBdUIsVUFBVSxLQUFLO0FBQUEsSUFDOUU7QUFBQSxJQUNBLFNBQVMsT0FBTyxFQUFFLE1BQU0sU0FBUyxHQUFHLFFBQVFDLFdBQVUsTUFBTTtBQUMxRCxZQUFNLE9BQU9ELFNBQVEsS0FBSyxJQUFJO0FBQzlCLGVBQVMsTUFBTSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQzlCLFlBQU0sTUFBTSxNQUFNRCxXQUFTLElBQUk7QUFDL0IsVUFBSSxTQUFTLEdBQUcsRUFBRyxPQUFNLElBQUksTUFBTSxHQUFHLElBQUksbUJBQW1CO0FBQzdELFlBQU0sUUFBUSxJQUFJLFNBQVMsT0FBTyxFQUFFLE1BQU0sSUFBSTtBQUU5QyxZQUFNLFFBQVEsS0FBSyxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBQ3BDLFlBQU0sUUFBUSxLQUFLLElBQUksT0FBT0UsVUFBUztBQUN2QyxZQUFNLFNBQVMsTUFBTSxNQUFNLE9BQU8sUUFBUSxLQUFLO0FBQy9DLFlBQU0sV0FBVyxPQUNkLElBQUksQ0FBQyxNQUFNLE1BQU0sR0FBRyxRQUFRLElBQUksQ0FBQyxJQUFLLEtBQUssU0FBUyxrQkFBa0IsS0FBSyxNQUFNLEdBQUcsZUFBZSxJQUFJLFdBQU0sSUFBSSxFQUFFLEVBQ25ILEtBQUssSUFBSTtBQUVaLGVBQVMsTUFBTSxFQUFFLFlBQVksT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO0FBQ2hELFlBQU0sU0FBUyxFQUFFLFNBQVMsVUFBVSxZQUFZLE1BQU0sT0FBTztBQUM3RCxVQUFJLFFBQVEsUUFBUSxNQUFNLFFBQVE7QUFDaEMsZUFBTyxPQUFPLGlCQUFpQixRQUFRLENBQUMsSUFBSSxRQUFRLE9BQU8sTUFBTSxPQUFPLE1BQU0sTUFBTTtBQUFBLE1BQ3RGO0FBQ0EsWUFBTSxVQUFVLFFBQVEsTUFBTSxJQUFJO0FBQ2xDLFVBQUksUUFBUSxPQUFRLFFBQU8seUJBQXlCO0FBQ3BELGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNGO0FBL0NBLElBR01BLFlBQ0E7QUFKTjtBQUFBO0FBR0EsSUFBTUEsYUFBWTtBQUNsQixJQUFNLGtCQUFrQjtBQUFBO0FBQUE7OztBQ0p4QixTQUFTLHVCQUF1QjtBQUV6QixTQUFTLFNBQVMsTUFBTSxTQUFTLFNBQVMsZUFBZSxHQUFHO0FBQ2pFLFFBQU0sUUFBUSxnQkFBZ0IsTUFBTSxNQUFNLFNBQVMsU0FBUyxJQUFJLElBQUksRUFBRSxTQUFTLGFBQWEsQ0FBQztBQUM3RixNQUFJLFlBQVk7QUFDaEIsTUFBSSxZQUFZO0FBQ2hCLFFBQU0sUUFBUSxNQUFNLE1BQU0sSUFBSSxDQUFDLE9BQU87QUFBQSxJQUNwQyxVQUFVLEVBQUU7QUFBQSxJQUNaLFVBQVUsRUFBRTtBQUFBLElBQ1osT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLFNBQVM7QUFDM0IsWUFBTSxPQUFPLEtBQUssQ0FBQyxNQUFNLE1BQU0sV0FBVyxLQUFLLENBQUMsTUFBTSxNQUFNLFFBQVE7QUFDcEUsVUFBSSxTQUFTLE1BQU87QUFDcEIsVUFBSSxTQUFTLFNBQVU7QUFDdkIsYUFBTyxFQUFFLE1BQU0sTUFBTSxLQUFLLE1BQU0sQ0FBQyxFQUFFO0FBQUEsSUFDckMsQ0FBQztBQUFBLEVBQ0gsRUFBRTtBQUNGLFNBQU8sRUFBRSxNQUFNLE9BQU8sV0FBVyxVQUFVO0FBQzdDO0FBakJBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSxTQUFTLFNBQUFDLFFBQU8sWUFBQUMsWUFBVSxhQUFBQyxrQkFBaUI7QUFDM0MsU0FBUyxXQUFBQyxVQUFTLFdBQUFDLGdCQUFlO0FBRzFCLFNBQVMsWUFBWSxFQUFFLEtBQUssVUFBVSxRQUFRLEdBQUc7QUFDdEQsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sYUFBYTtBQUFBLElBQ2IsUUFBUTtBQUFBLE1BQ04sTUFBTSxFQUFFLE1BQU0sVUFBVSxhQUFhLDJEQUEyRDtBQUFBLE1BQ2hHLFNBQVMsRUFBRSxNQUFNLFVBQVUsYUFBYSxpQ0FBaUM7QUFBQSxJQUMzRTtBQUFBLElBQ0EsU0FBUyxPQUFPLEVBQUUsTUFBTSxRQUFRLE1BQU07QUFDcEMsWUFBTSxPQUFPQSxTQUFRLEtBQUssSUFBSTtBQUM5QixlQUFTLE1BQU0sRUFBRSxPQUFPLEtBQUssQ0FBQztBQUM5QixZQUFNSixPQUFNRyxTQUFRLElBQUksR0FBRyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQzlDLFVBQUksU0FBUztBQUNiLFVBQUk7QUFDRixpQkFBUyxNQUFNRixXQUFTLE1BQU0sT0FBTztBQUFBLE1BQ3ZDLFFBQVE7QUFBQSxNQUFDO0FBRVQsVUFBSSxXQUFXLFNBQVM7QUFDdEIsZUFBTyxFQUFFLElBQUksTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLHdDQUF3QztBQUFBLE1BQzFGO0FBQ0EsWUFBTUMsV0FBVSxNQUFNLFNBQVMsT0FBTztBQUV0QyxZQUFNLFNBQVMsRUFBRSxJQUFJLE1BQU0sS0FBSztBQUNoQyxVQUFJLFdBQVcsTUFBTTtBQUNuQixjQUFNLE9BQU8sU0FBUyxNQUFNLFFBQVEsT0FBTztBQUMzQyxpQkFBUyxNQUFNLEVBQUUsTUFBTSxRQUFRLEVBQUUsTUFBTSxNQUFNLFFBQVEsT0FBTyxRQUFRLEVBQUUsQ0FBQztBQUN2RSxlQUFPLFlBQVksS0FBSztBQUN4QixlQUFPLFlBQVksS0FBSztBQUFBLE1BQzFCLE9BQU87QUFDTCxpQkFBUyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxRQUFRLElBQUksT0FBTyxRQUFRLEdBQUcsU0FBUyxLQUFLLENBQUM7QUFDcEYsZUFBTyxVQUFVO0FBQUEsTUFDbkI7QUFDQSxZQUFNLFVBQVUsUUFBUSxNQUFNLElBQUk7QUFDbEMsVUFBSSxRQUFRLE9BQVEsUUFBTyx5QkFBeUI7QUFDcEQsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBQ0Y7QUF6Q0E7QUFBQTtBQUVBO0FBQUE7QUFBQTs7O0FDRkEsU0FBUyxZQUFBRyxZQUFVLGFBQUFDLGtCQUFpQjtBQUNwQyxTQUFTLFdBQUFDLGdCQUFlO0FBVXhCLFNBQVMsT0FBTyxTQUFTLEtBQUssTUFBTTtBQUNsQyxNQUFJLFFBQVEsUUFBUSxRQUFRLEdBQUc7QUFDL0IsTUFBSSxVQUFVLElBQUk7QUFDaEIsUUFBSSxRQUFRLFFBQVEsS0FBSyxRQUFRLENBQUMsTUFBTSxJQUFJO0FBQzFDLFlBQU0sSUFBSSxNQUFNLG9DQUFvQyxJQUFJLHNEQUFzRDtBQUFBLElBQ2hIO0FBQ0EsV0FBTyxFQUFFLE9BQU8sUUFBUSxJQUFJLFFBQVEsUUFBUTtBQUFBLEVBQzlDO0FBRUEsUUFBTSxnQkFBZ0IsVUFBVSxPQUFPO0FBQ3ZDLFFBQU0sWUFBWSxVQUFVLEdBQUc7QUFDL0IsVUFBUSxjQUFjLFFBQVEsU0FBUztBQUN2QyxNQUFJLFVBQVUsR0FBSSxPQUFNLElBQUksTUFBTSx1QkFBdUIsSUFBSSxFQUFFO0FBQy9ELE1BQUksY0FBYyxRQUFRLFdBQVcsUUFBUSxDQUFDLE1BQU0sSUFBSTtBQUN0RCxVQUFNLElBQUksTUFBTSxvQ0FBb0MsSUFBSSxzREFBc0Q7QUFBQSxFQUNoSDtBQUNBLFNBQU8sRUFBRSxPQUFPLFFBQVEsVUFBVSxRQUFRLFNBQVMsY0FBYztBQUNuRTtBQUVPLFNBQVMsV0FBVyxFQUFFLEtBQUssVUFBVSxRQUFRLEdBQUc7QUFDckQsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sYUFBYTtBQUFBLElBQ2IsUUFBUTtBQUFBLE1BQ04sTUFBTSxFQUFFLE1BQU0sVUFBVSxhQUFhLDJEQUEyRDtBQUFBLE1BQ2hHLFNBQVMsRUFBRSxNQUFNLFVBQVUsYUFBYSxvREFBb0Q7QUFBQSxNQUM1RixTQUFTLEVBQUUsTUFBTSxVQUFVLGFBQWEsbUJBQW1CO0FBQUEsTUFDM0QsWUFBWSxFQUFFLE1BQU0sV0FBVyxhQUFhLDRCQUE0QixVQUFVLEtBQUs7QUFBQSxJQUN6RjtBQUFBLElBQ0EsU0FBUyxPQUFPLEVBQUUsTUFBTSxTQUFTLFNBQVMsV0FBVyxNQUFNO0FBQ3pELFlBQU0sT0FBT0EsU0FBUSxLQUFLLElBQUk7QUFDOUIsZUFBUyxNQUFNLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDOUIsWUFBTSxTQUFTLE1BQU1GLFdBQVMsTUFBTSxPQUFPO0FBRTNDLFVBQUk7QUFDSixVQUFJLFlBQVk7QUFDZCxZQUFJLENBQUMsT0FBTyxTQUFTLE9BQU8sRUFBRyxPQUFNLElBQUksTUFBTSx1QkFBdUIsSUFBSSxFQUFFO0FBQzVFLGdCQUFRLE9BQU8sTUFBTSxPQUFPLEVBQUUsS0FBSyxPQUFPO0FBQUEsTUFDNUMsT0FBTztBQUNMLGNBQU0sRUFBRSxPQUFPLFFBQVEsUUFBUSxJQUFJLE9BQU8sUUFBUSxTQUFTLElBQUk7QUFDL0QsZ0JBQVEsUUFBUSxNQUFNLEdBQUcsS0FBSyxJQUFJLFVBQVUsUUFBUSxNQUFNLFFBQVEsTUFBTTtBQUFBLE1BQzFFO0FBRUEsWUFBTUMsV0FBVSxNQUFNLE9BQU8sT0FBTztBQUNwQyxZQUFNLE9BQU8sU0FBUyxNQUFNLFFBQVEsS0FBSztBQUN6QyxlQUFTLE1BQU0sRUFBRSxNQUFNLFFBQVEsRUFBRSxNQUFNLE1BQU0sUUFBUSxNQUFNLEVBQUUsQ0FBQztBQUU5RCxZQUFNLFNBQVMsRUFBRSxJQUFJLE1BQU0sTUFBTSxXQUFXLEtBQUssV0FBVyxXQUFXLEtBQUssVUFBVTtBQUN0RixZQUFNLFVBQVUsUUFBUSxNQUFNLElBQUk7QUFDbEMsVUFBSSxRQUFRLE9BQVEsUUFBTyx5QkFBeUI7QUFDcEQsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBQ0Y7QUFoRUEsSUFJTTtBQUpOO0FBQUE7QUFFQTtBQUVBLElBQU0sWUFBWSxDQUFDLE1BQ2pCLEVBQ0csUUFBUSxVQUFVLEVBQUUsRUFDcEIsUUFBUSxTQUFTLEdBQUcsRUFDcEIsUUFBUSxTQUFTLEdBQUcsRUFDcEIsUUFBUSxTQUFTLEdBQUc7QUFBQTtBQUFBOzs7QUNUekIsU0FBUyxZQUFZO0FBSXJCLFNBQVMsT0FBTyxNQUFNO0FBQ3BCLE1BQUksS0FBSyxVQUFVLGlCQUFrQixRQUFPO0FBQzVDLFNBQU8sS0FBSyxNQUFNLEdBQUcsZ0JBQWdCLElBQUk7QUFBQSx1QkFBMEIsZ0JBQWdCO0FBQ3JGO0FBRU8sU0FBUyxXQUFXLEVBQUUsS0FBSyxVQUFVLFFBQVEsUUFBQUUsUUFBTyxHQUFHO0FBQzVELFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLGFBQWE7QUFBQSxJQUNiLFFBQVE7QUFBQSxNQUNOLFNBQVMsRUFBRSxNQUFNLFVBQVUsYUFBYSxxQkFBcUI7QUFBQSxNQUM3RCxTQUFTLEVBQUUsTUFBTSxVQUFVLGFBQWEsMkNBQTJDLFVBQVUsS0FBSztBQUFBLE1BQ2xHLFlBQVksRUFBRSxNQUFNLFdBQVcsYUFBYSwyREFBMkQsVUFBVSxLQUFLO0FBQUEsSUFDeEg7QUFBQSxJQUNBLFNBQVMsQ0FBQyxFQUFFLFNBQVMsU0FBUyxXQUFXLE1BQU07QUFDN0MsVUFBSSxjQUFjQSxTQUFRO0FBQ3hCLGlCQUFTLE1BQU0sRUFBRSxPQUFPLFNBQVMsWUFBWSxLQUFLLENBQUM7QUFDbkQsY0FBTSxFQUFFLEdBQUcsSUFBSUEsUUFBTyxNQUFNLFNBQVMsRUFBRSxJQUFJLENBQUM7QUFDNUMsZUFBTyxFQUFFLFNBQVMsSUFBSSxRQUFRLFVBQVU7QUFBQSxNQUMxQztBQUNBLGFBQU8sSUFBSSxRQUFRLENBQUNDLGFBQVk7QUFDOUIsaUJBQVMsTUFBTSxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBQ2pDLGNBQU0sUUFBUTtBQUFBLFVBQ1o7QUFBQSxVQUNBO0FBQUEsWUFDRTtBQUFBLFlBQ0EsU0FBUyxXQUFXO0FBQUEsWUFDcEIsV0FBVyxLQUFLLE9BQU87QUFBQSxZQUN2QixLQUFLLEVBQUUsR0FBRyxRQUFRLEtBQUssYUFBYSxLQUFLLFVBQVUsSUFBSTtBQUFBLFVBQ3pEO0FBQUEsVUFDQSxDQUFDLEtBQUssUUFBUSxXQUFXO0FBQ3ZCLGtCQUFNLFdBQVcsTUFBTyxPQUFPLElBQUksU0FBUyxXQUFXLElBQUksT0FBTyxJQUFLO0FBQ3ZFLHFCQUFTLE1BQU0sRUFBRSxZQUFZLENBQUMsUUFBUSxNQUFNLEVBQUUsT0FBTyxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUMxRSxZQUFBQSxTQUFRLEVBQUUsUUFBUSxPQUFPLFVBQVUsRUFBRSxHQUFHLFFBQVEsT0FBTyxVQUFVLEVBQUUsR0FBRyxTQUFTLENBQUM7QUFBQSxVQUNsRjtBQUFBLFFBQ0Y7QUFDQSxZQUFJLFFBQVE7QUFDVixjQUFJLE9BQU8sU0FBUztBQUNsQixrQkFBTSxLQUFLO0FBQ1g7QUFBQSxVQUNGO0FBQ0EsaUJBQU8saUJBQWlCLFNBQVMsTUFBTSxNQUFNLEtBQUssR0FBRyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQUEsUUFDckU7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGO0FBbERBLElBRU07QUFGTjtBQUFBO0FBRUEsSUFBTSxtQkFBbUI7QUFBQTtBQUFBOzs7QUNGekIsU0FBUyxZQUFBQyxpQkFBZ0I7QUFDekIsT0FBTyxRQUFRO0FBSWYsU0FBUyxZQUFZLFNBQVMsS0FBSztBQUNqQyxTQUFPLElBQUksUUFBUSxDQUFDQyxhQUFZO0FBQzlCLFVBQU0sT0FBTyxDQUFDLFdBQVcsWUFBWSxVQUFVLFNBQVMsVUFBVSx1QkFBdUIsVUFBVSxhQUFhO0FBQ2hILElBQUFELFVBQVMsTUFBTSxNQUFNLEVBQUUsS0FBSyxXQUFXLEtBQUssT0FBTyxLQUFLLEdBQUcsQ0FBQyxLQUFLLFdBQVc7QUFDMUUsVUFBSSxPQUFPLElBQUksU0FBUyxFQUFHLENBQUFDLFNBQVEsSUFBSTtBQUFBLFVBQ2xDLENBQUFBLFNBQVEsU0FBUyxPQUFPLE1BQU0sSUFBSSxFQUFFLE9BQU8sT0FBTyxJQUFJLENBQUMsQ0FBQztBQUFBLElBQy9ELENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDtBQUVPLFNBQVMsV0FBVyxFQUFFLEtBQUssU0FBUyxHQUFHO0FBQzVDLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLGFBQWE7QUFBQSxJQUNiLFFBQVE7QUFBQSxNQUNOLFNBQVMsRUFBRSxNQUFNLFVBQVUsYUFBYSxpQ0FBaUM7QUFBQSxNQUN6RSxZQUFZLEVBQUUsTUFBTSxVQUFVLGFBQWEsc0NBQXNDLFVBQVUsS0FBSztBQUFBLElBQ2xHO0FBQUEsSUFDQSxTQUFTLE9BQU8sRUFBRSxTQUFTLGFBQWEsWUFBWSxNQUFNO0FBQ3hELGVBQVMsTUFBTSxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBQ2pDLFVBQUksUUFBUSxNQUFNLFlBQVksU0FBUyxHQUFHO0FBQzFDLFVBQUksVUFBVSxNQUFNO0FBQ2xCLGdCQUFRLE1BQU0sR0FBRyxTQUFTO0FBQUEsVUFDeEI7QUFBQSxVQUNBLEtBQUs7QUFBQSxVQUNMLFFBQVEsQ0FBQyxzQkFBc0IsWUFBWTtBQUFBLFFBQzdDLENBQUM7QUFBQSxNQUNIO0FBQ0EsZUFBUyxNQUFNLEVBQUUsWUFBWSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDL0MsYUFBTztBQUFBLFFBQ0wsT0FBTyxNQUFNLE1BQU0sR0FBRyxVQUFVO0FBQUEsUUFDaEMsWUFBWSxNQUFNO0FBQUEsUUFDbEIsV0FBVyxNQUFNLFNBQVM7QUFBQSxNQUM1QjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUF6Q0EsSUFHTTtBQUhOO0FBQUE7QUFHQSxJQUFNLGNBQWM7QUFBQTtBQUFBOzs7QUNIcEIsU0FBUyxZQUFBQyxpQkFBZ0I7QUFDekIsU0FBUyxVQUFVLFdBQUFDLGdCQUFlO0FBSWxDLFNBQVMsV0FBVyxNQUFNLEtBQUs7QUFDN0IsU0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTO0FBQzNCLElBQUFELFVBQVMsTUFBTSxNQUFNLEVBQUUsS0FBSyxXQUFXLEtBQUssT0FBTyxLQUFLLEdBQUcsQ0FBQyxLQUFLLFdBQVc7QUFDMUUsV0FBSyxPQUFPLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRTtBQUFBLElBQ3pDLENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDtBQUVPLFNBQVMsV0FBVyxFQUFFLEtBQUssU0FBUyxHQUFHO0FBQzVDLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLGFBQWE7QUFBQSxJQUNiLFFBQVE7QUFBQSxNQUNOLFNBQVMsRUFBRSxNQUFNLFVBQVUsYUFBYSxnQkFBZ0I7QUFBQSxNQUN4RCxNQUFNLEVBQUUsTUFBTSxVQUFVLGFBQWEsa0VBQWtFLFVBQVUsS0FBSztBQUFBLE1BQ3RILE1BQU0sRUFBRSxNQUFNLFVBQVUsTUFBTSxDQUFDLFdBQVcsU0FBUyxPQUFPLEdBQUcsVUFBVSxLQUFLO0FBQUEsTUFDNUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxhQUFhLG1DQUFtQyxVQUFVLEtBQUs7QUFBQSxNQUN2RixZQUFZLEVBQUUsTUFBTSxXQUFXLFVBQVUsS0FBSztBQUFBLE1BQzlDLFNBQVMsRUFBRSxNQUFNLFVBQVUsYUFBYSxtQ0FBbUMsVUFBVSxLQUFLO0FBQUEsTUFDMUYsV0FBVyxFQUFFLE1BQU0sV0FBVyxhQUFhLGdDQUFnQyxVQUFVLEtBQUs7QUFBQSxNQUMxRixPQUFPLEVBQUUsTUFBTSxVQUFVLGFBQWEsNEJBQTRCLFVBQVUsS0FBSztBQUFBLElBQ25GO0FBQUEsSUFDQSxTQUFTLE9BQU8sRUFBRSxTQUFTLE1BQU0sT0FBTyxXQUFXLE1BQU0sWUFBWSxTQUFTLFdBQVcsUUFBUUUsYUFBWSxNQUFNO0FBQ2pILGVBQVMsTUFBTSxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBQ2pDLFlBQU0sT0FBTyxDQUFDLGdCQUFnQixpQkFBaUIsaUJBQWlCLE9BQU8sWUFBWSxVQUFVLGFBQWE7QUFFMUcsVUFBSSxTQUFTLFFBQVMsTUFBSyxLQUFLLHNCQUFzQjtBQUFBLGVBQzdDLFNBQVMsUUFBUyxNQUFLLEtBQUssU0FBUztBQUFBLFVBQ3pDLE1BQUssS0FBSyxlQUFlO0FBRTlCLFVBQUksV0FBWSxNQUFLLEtBQUssZUFBZTtBQUN6QyxVQUFJLFVBQVcsTUFBSyxLQUFLLGVBQWUsb0JBQW9CO0FBQzVELFVBQUksS0FBTSxNQUFLLEtBQUssVUFBVSxJQUFJO0FBQ2xDLFVBQUksU0FBUyxhQUFhLFFBQVMsTUFBSyxLQUFLLE1BQU0sT0FBTyxPQUFPLENBQUM7QUFFbEUsV0FBSyxLQUFLLFFBQVEsV0FBVyxHQUFHLElBQUksT0FBTyxNQUFNLE9BQU87QUFDeEQsV0FBSyxLQUFLLE9BQU9ELFNBQVEsS0FBSyxJQUFJLElBQUksR0FBRztBQUV6QyxZQUFNLFNBQVMsTUFBTSxXQUFXLE1BQU0sR0FBRztBQUN6QyxZQUFNLFFBQVEsT0FBTyxNQUFNLElBQUksRUFBRSxPQUFPLE9BQU87QUFDL0MsZUFBUyxNQUFNLEVBQUUsWUFBWSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7QUFFL0MsWUFBTSxhQUFhLENBQUMsU0FBUztBQUMzQixZQUFJLFNBQVMsUUFBUyxRQUFPLFNBQVMsS0FBSyxJQUFJO0FBQy9DLGNBQU0sSUFBSSxLQUFLLE1BQU0sa0JBQWtCO0FBQ3ZDLGVBQU8sSUFBSSxHQUFHLFNBQVMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSztBQUFBLE1BQ2hEO0FBQ0EsWUFBTSxVQUFVLE1BQU0sSUFBSSxVQUFVLEVBQUUsTUFBTSxHQUFHLEtBQUs7QUFDcEQsYUFBTyxFQUFFLFNBQVMsTUFBTSxjQUFjLE1BQU0sUUFBUSxXQUFXLE1BQU0sU0FBUyxNQUFNO0FBQUEsSUFDdEY7QUFBQSxFQUNGO0FBQ0Y7QUF4REEsSUFHTUM7QUFITjtBQUFBO0FBR0EsSUFBTUEsZUFBYztBQUFBO0FBQUE7OztBQ0tiLFNBQVMsY0FBYyxFQUFFLEtBQUssU0FBUyxRQUFRLFFBQUFDLFNBQVEsU0FBQUMsVUFBUyxRQUFRLFdBQVcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLFFBQVEsYUFBYSxHQUFHO0FBQ3BJLFFBQU0sV0FBVyxlQUFlO0FBQ2hDLFFBQU0sT0FBTyxFQUFFLEtBQUssVUFBVSxTQUFTLFFBQVEsUUFBQUQsUUFBTztBQUV0RCxRQUFNLFFBQVE7QUFBQSxJQUNaLFdBQVcsSUFBSTtBQUFBLElBQ2YsWUFBWSxJQUFJO0FBQUEsSUFDaEIsV0FBVyxJQUFJO0FBQUEsSUFDZixXQUFXLElBQUk7QUFBQSxJQUNmLFdBQVcsSUFBSTtBQUFBLElBQ2YsV0FBVyxJQUFJO0FBQUEsRUFDakI7QUFFQSxNQUFJQSxTQUFRO0FBQ1YsVUFBTTtBQUFBLE1BQ0o7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGFBQWE7QUFBQSxRQUNiLFFBQVE7QUFBQSxVQUNOLElBQUksRUFBRSxNQUFNLFVBQVUsYUFBYSxlQUFlO0FBQUEsVUFDbEQsTUFBTSxFQUFFLE1BQU0sVUFBVSxhQUFhLGtEQUFrRCxVQUFVLEtBQUs7QUFBQSxRQUN4RztBQUFBLFFBQ0EsU0FBUyxDQUFDLEVBQUUsSUFBSSxPQUFPLElBQUksTUFBTUEsUUFBTyxPQUFPLElBQUksRUFBRSxNQUFNLEtBQUssSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQUEsTUFDbEY7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixhQUFhO0FBQUEsUUFDYixRQUFRO0FBQUEsVUFDTixJQUFJLEVBQUUsTUFBTSxVQUFVLGFBQWEsZUFBZTtBQUFBLFFBQ3BEO0FBQUEsUUFDQSxTQUFTLENBQUMsRUFBRSxHQUFHLE1BQU1BLFFBQU8sS0FBSyxJQUFJLE9BQU87QUFBQSxNQUM5QztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsTUFBSUMsVUFBUztBQUNYLFVBQU07QUFBQSxNQUNKO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixhQUFhO0FBQUEsUUFDYixRQUFRO0FBQUEsVUFDTixjQUFjLEVBQUUsTUFBTSxVQUFVLGFBQWEsOEJBQThCO0FBQUEsVUFDM0UsTUFBTSxFQUFFLE1BQU0sVUFBVSxhQUFhLDJEQUEyRDtBQUFBLFFBQ2xHO0FBQUEsUUFDQSxTQUFTLENBQUMsRUFBRSxjQUFjLEtBQUssTUFBTTtBQUNuQyxnQkFBTSxFQUFFLElBQUksSUFBSSxRQUFRLElBQUlBLFNBQVEsU0FBUyxjQUFjLElBQUk7QUFDL0QsaUJBQU8sRUFBRSxVQUFVLElBQUksU0FBUyxJQUFJLEtBQUssRUFBRSxFQUFFLFNBQVMsR0FBRyxXQUFXLFFBQVE7QUFBQSxRQUM5RTtBQUFBLE1BQ0Y7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixhQUFhO0FBQUEsUUFDYixRQUFRO0FBQUEsVUFDTixJQUFJLEVBQUUsTUFBTSxVQUFVLGFBQWEsaUJBQWlCO0FBQUEsUUFDdEQ7QUFBQSxRQUNBLFNBQVMsQ0FBQyxFQUFFLEdBQUcsTUFBTUEsU0FBUSxPQUFPLEVBQUU7QUFBQSxNQUN4QztBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGFBQWE7QUFBQSxRQUNiLFFBQVEsQ0FBQztBQUFBLFFBQ1QsU0FBUyxPQUFPO0FBQUEsVUFDZCxTQUFTQSxTQUFRLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTztBQUFBLFlBQ2xDLElBQUksRUFBRTtBQUFBLFlBQ04sU0FBUyxJQUFJLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUztBQUFBLFlBQ2pDLFdBQVcsS0FBSyxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUUsS0FBSyxLQUFLLElBQUksS0FBSyxHQUFJLENBQUM7QUFBQSxZQUM3RCxNQUFNLEVBQUU7QUFBQSxVQUNWLEVBQUU7QUFBQSxRQUNKO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsTUFBSSxRQUFRO0FBQ1YsVUFBTTtBQUFBLE1BQ0o7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGFBQWE7QUFBQSxRQUNiLFFBQVE7QUFBQSxVQUNOLE1BQU0sRUFBRSxNQUFNLFVBQVUsYUFBYSw4QkFBOEI7QUFBQSxVQUNuRSxhQUFhLEVBQUUsTUFBTSxVQUFVLGFBQWEsaUZBQWlGO0FBQUEsVUFDN0gsU0FBUyxFQUFFLE1BQU0sVUFBVSxhQUFhLG9CQUFvQjtBQUFBLFVBQzVELE9BQU8sRUFBRSxNQUFNLFVBQVUsTUFBTSxDQUFDLFdBQVcsUUFBUSxHQUFHLFVBQVUsS0FBSztBQUFBLFFBQ3ZFO0FBQUEsUUFDQSxTQUFTLE9BQU8sRUFBRSxNQUFNLGFBQWEsU0FBUyxPQUFBQyxPQUFNLE1BQU07QUFDeEQsZ0JBQU0sUUFBUSxNQUFNLE9BQU8sU0FBUyxFQUFFLE1BQU0sYUFBYSxTQUFTLE9BQUFBLE9BQU0sQ0FBQztBQUN6RSxtQkFBUyxNQUFNLEVBQUUsT0FBTyxHQUFHLE1BQU0sSUFBSSxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFDMUQsaUJBQU87QUFBQSxRQUNUO0FBQUEsTUFDRjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGFBQWE7QUFBQSxRQUNiLFFBQVE7QUFBQSxVQUNOLE1BQU0sRUFBRSxNQUFNLFVBQVUsYUFBYSxpQ0FBaUM7QUFBQSxRQUN4RTtBQUFBLFFBQ0EsU0FBUyxPQUFPLEVBQUUsS0FBSyxNQUFNO0FBQzNCLGdCQUFNLFFBQVEsTUFBTSxPQUFPLE9BQU8sSUFBSTtBQUN0QyxtQkFBUyxNQUFNLEVBQUUsT0FBTyxNQUFNLEtBQUssQ0FBQztBQUNwQyxpQkFBTztBQUFBLFFBQ1Q7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxNQUFJLFFBQVEsS0FBSyxFQUFFLFFBQVE7QUFDekIsVUFBTSxLQUFLO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixhQUFhO0FBQUEsRUFBd0UsT0FDbEYsS0FBSyxFQUNMLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxJQUFJLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFDMUMsS0FBSyxJQUFJLENBQUM7QUFBQSxNQUNiLFFBQVE7QUFBQSxRQUNOLE1BQU0sRUFBRSxNQUFNLFVBQVUsYUFBYSxhQUFhO0FBQUEsTUFDcEQ7QUFBQSxNQUNBLFNBQVMsT0FBTyxFQUFFLEtBQUssTUFBTTtBQUMzQixpQkFBUyxNQUFNLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDOUIsY0FBTSxPQUFPLE1BQU0sT0FBTyxLQUFLLElBQUk7QUFDbkMsWUFBSSxDQUFDLEtBQU0sT0FBTSxJQUFJLE1BQU0sa0JBQWtCLElBQUksRUFBRTtBQUNuRCxlQUFPLEVBQUUsY0FBYyxLQUFLO0FBQUEsTUFDOUI7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBRUEsUUFBTSxTQUFTLG9CQUFJLElBQUk7QUFDdkIsYUFBVyxRQUFRLENBQUMsR0FBRyxPQUFPLEdBQUcsV0FBVyxHQUFHLFFBQVEsR0FBRztBQUN4RCxRQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssSUFBSSxFQUFHLFFBQU8sSUFBSSxLQUFLLE1BQU0sSUFBSTtBQUFBLEVBQ3hEO0FBQ0EsUUFBTSxRQUFRLENBQUMsR0FBRyxPQUFPLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVO0FBQUEsSUFDaEQsR0FBRztBQUFBLElBQ0gsU0FBUyxTQUFTLFVBQVUsS0FBSyxNQUFNLE9BQU8sU0FBUztBQUNyRCxVQUFJLGdCQUFnQixTQUFTLFFBQVEsVUFBVSxjQUFjO0FBQzNELGNBQU0sSUFBSSxNQUFNLGtHQUFrRztBQUFBLE1BQ3BIO0FBQ0EsYUFBTyxLQUFLLFFBQVEsSUFBSTtBQUFBLElBQzFCLENBQUM7QUFBQSxFQUNILEVBQUU7QUFFRixTQUFPLEVBQUUsT0FBTyxTQUFTO0FBQzNCO0FBbkpBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7OztBQ05BLFNBQVMsVUFBVSxNQUFNLGVBQWU7QUFRakMsU0FBUyxrQkFBa0IsRUFBRSxLQUFLLGVBQWUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLGtCQUFrQixHQUFHLEdBQUc7QUFDL0YsUUFBTSxNQUFNLG9CQUFJLEtBQUs7QUFDckIsUUFBTSxRQUFRO0FBQUEsSUFDWjtBQUFBLElBQ0E7QUFBQSxJQUNBLHNCQUFzQixHQUFHO0FBQUEsSUFDekIsYUFBYSxlQUFlLFNBQVMsQ0FBQyxLQUFLLFNBQVMsQ0FBQztBQUFBLElBQ3JELDBCQUEwQixJQUFJLFNBQVMsQ0FBQztBQUFBLElBQ3hDO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxNQUFJLGlCQUFpQjtBQUNuQixVQUFNLEtBQUssSUFBSSxlQUFlO0FBQUEsRUFDaEM7QUFFQSxNQUFJLE9BQU8sUUFBUTtBQUNqQixVQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0E7QUFBQSxNQUNBLEdBQUcsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxLQUFLLEVBQUUsV0FBVyxFQUFFO0FBQUEsSUFDdEQ7QUFBQSxFQUNGO0FBRUEsYUFBVyxRQUFRLGNBQWM7QUFDL0IsVUFBTSxLQUFLLElBQUksNkJBQTZCLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxRQUFRLEtBQUssQ0FBQztBQUFBLEVBQ25GO0FBRUEsU0FBTyxNQUFNLEtBQUssSUFBSTtBQUN4QjtBQTNDQSxJQUVNO0FBRk47QUFBQTtBQUVBLElBQU0saUJBQWlCO0FBQUEsTUFDckIsUUFBUSxpQkFBaUIsS0FBSyxDQUFDLFlBQVksUUFBUSxDQUFDO0FBQUEsTUFDcEQsT0FBTyxVQUFVLEtBQUssQ0FBQyxZQUFZLFFBQVEsQ0FBQztBQUFBLE1BQzVDLE9BQU8sWUFBWSxLQUFLLENBQUM7QUFBQSxJQUMzQjtBQUFBO0FBQUE7OztBQ05PLFNBQVMsV0FBVyxPQUFPLE1BQU07QUFDdEMsUUFBTSxJQUFJLE1BQU0sWUFBWTtBQUM1QixRQUFNLElBQUksS0FBSyxZQUFZO0FBQzNCLE1BQUksQ0FBQyxFQUFHLFFBQU87QUFDZixNQUFJLE9BQU87QUFDWCxXQUFTLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxJQUFJLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHO0FBQ2xGLFFBQUksUUFBUTtBQUNaLFFBQUksT0FBTztBQUNYLFFBQUksVUFBVTtBQUNkLGVBQVcsTUFBTSxHQUFHO0FBQ2xCLFlBQU0sSUFBSSxFQUFFLFFBQVEsSUFBSSxTQUFTLEtBQUssUUFBUSxPQUFPLENBQUM7QUFDdEQsVUFBSSxNQUFNLElBQUk7QUFDWixrQkFBVTtBQUNWO0FBQUEsTUFDRjtBQUNBLFVBQUksU0FBUyxNQUFNLE1BQU0sT0FBTyxFQUFHLFVBQVM7QUFDNUMsVUFBSSxNQUFNLEtBQUssT0FBTyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRyxVQUFTO0FBQ25ELGVBQVM7QUFDVCxhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksV0FBVyxRQUFRLEtBQU0sUUFBTztBQUFBLEVBQ3RDO0FBQ0EsTUFBSSxPQUFPLEVBQUcsUUFBTztBQUNyQixRQUFNLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxHQUFHLElBQUksQ0FBQztBQUMzQyxNQUFJLEtBQUssV0FBVyxDQUFDLEVBQUcsU0FBUTtBQUFBLFdBQ3ZCLEtBQUssU0FBUyxDQUFDLEVBQUcsU0FBUTtBQUFBLFdBQzFCLEVBQUUsU0FBUyxDQUFDLEVBQUcsU0FBUTtBQUNoQyxTQUFPLE9BQU8sRUFBRSxTQUFTO0FBQzNCO0FBNUJBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSxTQUFTLGNBQUFDLG1CQUFrQjtBQVlwQixTQUFTLGFBQWEsTUFBTTtBQUNqQyxTQUFPLFlBQVksS0FBSyxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUs7QUFDN0Q7QUFFQSxTQUFTLFFBQVEsT0FBTztBQUN0QixNQUFJLFNBQVMsS0FBSyxLQUFLLEtBQUssU0FBUyxLQUFLLEtBQUssRUFBRyxRQUFPLE1BQU0sTUFBTSxHQUFHLEVBQUU7QUFDMUUsU0FBTyxNQUFNLFFBQVEsUUFBUSxHQUFHO0FBQ2xDO0FBRUEsU0FBUyxPQUFPLE9BQU87QUFDckIsUUFBTSxNQUFNLFFBQVEsTUFBTSxLQUFLLENBQUM7QUFDaEMsTUFBSSxJQUFJLFdBQVcsU0FBUyxHQUFHO0FBQzdCLFFBQUk7QUFDRixhQUFPLG1CQUFtQixJQUFJLE1BQU0sVUFBVSxNQUFNLENBQUM7QUFBQSxJQUN2RCxRQUFRO0FBQ04sYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNUO0FBRU8sU0FBUyxrQkFBa0IsTUFBTSxTQUFTQSxhQUFZO0FBQzNELFFBQU0sU0FBUyxLQUFLLEtBQUssRUFBRSxNQUFNLHNDQUFzQztBQUN2RSxNQUFJLENBQUMsVUFBVSxPQUFPLFdBQVcsRUFBRyxRQUFPLENBQUM7QUFDNUMsUUFBTSxRQUFRLENBQUM7QUFDZixhQUFXLFNBQVMsUUFBUTtBQUMxQixVQUFNLE9BQU8sT0FBTyxLQUFLO0FBQ3pCLFFBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxXQUFXLEdBQUcsRUFBRyxRQUFPLENBQUM7QUFDNUMsUUFBSSxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUcsUUFBTyxDQUFDO0FBQ2xELFVBQU0sS0FBSyxJQUFJO0FBQUEsRUFDakI7QUFDQSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLHNCQUFzQixNQUFNLFNBQVNBLGFBQVk7QUFDL0QsUUFBTSxRQUFRLENBQUM7QUFDZixNQUFJLE9BQU87QUFDWCxhQUFXLFNBQVMsS0FBSyxTQUFTLGFBQWEsR0FBRztBQUNoRCxVQUFNLE9BQU8sTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEVBQUUsUUFBUSxRQUFRLEdBQUc7QUFDckQsVUFBTSxZQUFZLGFBQWEsSUFBSTtBQUNuQyxRQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxFQUFHO0FBQ2pDLFFBQUksTUFBTSxRQUFRLEtBQU0sT0FBTSxLQUFLLEVBQUUsTUFBTSxRQUFRLE1BQU0sS0FBSyxNQUFNLE1BQU0sTUFBTSxLQUFLLEVBQUUsQ0FBQztBQUN4RixVQUFNLEtBQUssRUFBRSxNQUFNLFNBQVMsUUFBUSxFQUFFLE1BQU0sUUFBUSxNQUFNLFVBQVUsRUFBRSxDQUFDO0FBQ3ZFLFdBQU8sTUFBTSxRQUFRLE1BQU0sQ0FBQyxFQUFFO0FBQUEsRUFDaEM7QUFDQSxNQUFJLE1BQU0sV0FBVyxFQUFHLFFBQU87QUFDL0IsUUFBTSxPQUFPLEtBQUssTUFBTSxJQUFJO0FBQzVCLE1BQUksS0FBTSxPQUFNLEtBQUssRUFBRSxNQUFNLFFBQVEsTUFBTSxLQUFLLENBQUM7QUFDakQsU0FBTztBQUNUO0FBRU8sU0FBUyxpQkFBaUIsTUFBTSxhQUFhO0FBQ2xELFFBQU0sUUFBUSxDQUFDO0FBQ2YsTUFBSSxPQUFPO0FBQ1gsUUFBTSxPQUFPLENBQUM7QUFDZCxhQUFXLFNBQVMsS0FBSyxTQUFTLGlCQUFpQixHQUFHO0FBQ3BELFVBQU0sYUFBYSxZQUFZLElBQUksTUFBTSxDQUFDLENBQUM7QUFDM0MsUUFBSSxDQUFDLFdBQVk7QUFDakIsVUFBTSxTQUFTLEtBQUssTUFBTSxNQUFNLE1BQU0sS0FBSztBQUMzQyxRQUFJLE9BQVEsT0FBTSxLQUFLLEVBQUUsTUFBTSxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBQ3JELFVBQU0sS0FBSztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sUUFBUSxFQUFFLE1BQU0sUUFBUSxNQUFNLFdBQVcsTUFBTSxXQUFXLFdBQVcsVUFBVTtBQUFBLElBQ2pGLENBQUM7QUFDRCxTQUFLLEtBQUssTUFBTSxDQUFDLENBQUM7QUFDbEIsV0FBTyxNQUFNLFFBQVEsTUFBTSxDQUFDLEVBQUU7QUFBQSxFQUNoQztBQUNBLE1BQUksTUFBTSxXQUFXLEVBQUcsUUFBTyxFQUFFLFNBQVMsTUFBTSxLQUFLO0FBQ3JELFFBQU0sT0FBTyxLQUFLLE1BQU0sSUFBSTtBQUM1QixNQUFJLEtBQU0sT0FBTSxLQUFLLEVBQUUsTUFBTSxRQUFRLE1BQU0sS0FBSyxDQUFDO0FBQ2pELFNBQU8sRUFBRSxTQUFTLE9BQU8sS0FBSztBQUNoQztBQUVPLFNBQVMseUJBQXlCLE1BQU0sRUFBRSxhQUFhLFFBQVEsU0FBU0EsWUFBVyxHQUFHO0FBQzNGLFFBQU0sUUFBUSxzQkFBc0IsTUFBTSxNQUFNO0FBQ2hELE1BQUksQ0FBQyxNQUFPLFFBQU8sRUFBRSxNQUFNLFNBQVMsTUFBTTtBQUMxQyxNQUFJLE1BQU07QUFDVixhQUFXLFFBQVEsT0FBTztBQUN4QixRQUFJLEtBQUssU0FBUyxRQUFRO0FBQ3hCLGFBQU8sS0FBSztBQUFBLElBQ2QsT0FBTztBQUNMLFlBQU0sY0FBYyxXQUFXLE9BQU8sQ0FBQztBQUN2QyxrQkFBWSxJQUFJLGFBQWEsRUFBRSxNQUFNLEtBQUssT0FBTyxNQUFNLFdBQVcsS0FBSyxPQUFPLFVBQVUsQ0FBQztBQUN6RixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFDQSxTQUFPLEVBQUUsTUFBTSxLQUFLLFNBQVMsS0FBSztBQUNwQztBQUVPLFNBQVMscUJBQXFCLFNBQVMsRUFBRSxhQUFhLE9BQU8sR0FBRztBQUNyRSxNQUFJLENBQUMsTUFBTSxRQUFRLE9BQU8sRUFBRyxRQUFPLE9BQU8sT0FBTztBQUNsRCxNQUFJLE1BQU07QUFDVixhQUFXLFFBQVEsU0FBUztBQUMxQixRQUFJLEtBQUssU0FBUyxRQUFRO0FBQ3hCLGFBQU8sS0FBSztBQUFBLElBQ2QsV0FBVyxLQUFLLFNBQVMsV0FBVyxLQUFLLFFBQVEsTUFBTTtBQUNyRCxZQUFNLGNBQWMsV0FBVyxPQUFPLENBQUM7QUFDdkMsa0JBQVksSUFBSSxhQUFhLEVBQUUsTUFBTSxLQUFLLE9BQU8sTUFBTSxXQUFXLEtBQUssT0FBTyxVQUFVLENBQUM7QUFDekYsYUFBTztBQUFBLElBQ1QsT0FBTztBQUNMLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDtBQUVPLFNBQVMsb0JBQW9CLE1BQU0sYUFBYSxTQUFTQSxhQUFZO0FBQzFFLFFBQU0sRUFBRSxTQUFTLEtBQUssSUFBSSxpQkFBaUIsTUFBTSxXQUFXO0FBQzVELFFBQU0sUUFBUSxNQUFNLFFBQVEsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLE1BQU0sUUFBUSxNQUFNLFFBQVEsQ0FBQztBQUNqRixRQUFNLFdBQVcsQ0FBQztBQUNsQixhQUFXLFFBQVEsT0FBTztBQUN4QixRQUFJLEtBQUssU0FBUyxRQUFRO0FBQ3hCLGVBQVMsS0FBSyxJQUFJO0FBQ2xCO0FBQUEsSUFDRjtBQUNBLFVBQU0sUUFBUSxzQkFBc0IsS0FBSyxNQUFNLE1BQU07QUFDckQsUUFBSSxNQUFPLFVBQVMsS0FBSyxHQUFHLEtBQUs7QUFBQSxRQUM1QixVQUFTLEtBQUssSUFBSTtBQUFBLEVBQ3pCO0FBQ0EsTUFBSSxTQUFTLFdBQVcsS0FBSyxTQUFTLENBQUMsRUFBRSxTQUFTLE9BQVEsUUFBTyxFQUFFLFNBQVMsU0FBUyxDQUFDLEVBQUUsTUFBTSxLQUFLO0FBQ25HLFNBQU8sRUFBRSxTQUFTLFVBQVUsS0FBSztBQUNuQztBQTVJQSxJQUdNLGFBZ0RBO0FBbkROO0FBQUE7QUFHQSxJQUFNLGNBQWM7QUFBQSxNQUNsQixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsSUFDUDtBQXlDQSxJQUFNLGdCQUFnQjtBQUFBO0FBQUE7OztBQ25EdEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFTLFFBQUFDLGNBQVk7QUFvQnJCLFNBQVMsYUFBYUMsU0FBUUMsWUFBVyxNQUFNO0FBQzdDLE1BQUksQ0FBQyxLQUFNLFFBQU87QUFDbEIsUUFBTSxRQUFRRCxRQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxJQUFJO0FBQ2hELE1BQUksTUFBTyxRQUFPO0FBQ2xCLE1BQUksS0FBSyxTQUFTLEdBQUcsRUFBRyxRQUFPLFdBQVcsTUFBTUMsVUFBUztBQUN6RCxRQUFNLFNBQVNELFFBQ1osT0FBTyxDQUFDLE1BQU0sRUFBRSxjQUFjLEtBQUssRUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQ3hDLE9BQU8sQ0FBQyxDQUFDLEtBQUssTUFBTSxTQUFTLENBQUMsRUFDOUIsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM3QixTQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSztBQUMzQjtBQUVBLGVBQWUsWUFBWTtBQUN6QixNQUFJLFFBQVEsTUFBTSxNQUFPLFFBQU87QUFDaEMsTUFBSSxPQUFPO0FBQ1gsbUJBQWlCLFNBQVMsUUFBUSxPQUFPO0FBQ3ZDLFlBQVE7QUFDUixRQUFJLEtBQUssU0FBUyxJQUFRO0FBQUEsRUFDNUI7QUFDQSxTQUFPLEtBQUssTUFBTSxHQUFHLEdBQU07QUFDN0I7QUFFQSxlQUFzQixZQUFZLE1BQU07QUFDdEMsUUFBTSxZQUFZLEtBQUssSUFBSTtBQUMzQixRQUFNLE1BQU0sS0FBSyxRQUFRLE1BQU07QUFBQSxFQUFDLElBQUksQ0FBQyxTQUFTLFFBQVEsT0FBTyxNQUFNLE9BQU8sSUFBSTtBQUU5RSxRQUFNRSxXQUFVLE1BQU0sZ0JBQWdCO0FBQ3RDLFFBQU1ELGFBQVksQ0FBQyxHQUFHLFVBQVUsYUFBYSxDQUFDLEdBQUcsR0FBSUMsV0FBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUU7QUFDOUUsTUFBSUQsV0FBVSxXQUFXLEdBQUc7QUFDMUIsWUFBUSxPQUFPLE1BQU0seUVBQXlFO0FBQzlGLFdBQU87QUFBQSxFQUNUO0FBQ0EsUUFBTUUsZUFBYyxNQUFNLFlBQVk7QUFDdEMsUUFBTUMsY0FBYUYsV0FBVSxNQUFNLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUk7QUFDM0UsUUFBTUYsVUFBUztBQUFBLElBQ2IsR0FBRyxjQUFjRyxjQUFhLENBQUMsVUFBVSxhQUFhLFVBQVUsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU87QUFBQSxNQUNsRixHQUFHO0FBQUEsTUFDSCxXQUFXRixXQUFVLFNBQVMsRUFBRSxRQUFRO0FBQUEsSUFDMUMsRUFBRTtBQUFBLElBQ0YsSUFBSSxNQUFNLGdCQUFnQkcsV0FBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFdBQVdGLFNBQVEsRUFBRTtBQUFBLEVBQ2xGO0FBQ0EsUUFBTUcsVUFBUyxNQUFNLFdBQVc7QUFFaEMsUUFBTUMsU0FBUSxhQUFhTixTQUFRQyxZQUFXLEtBQUssS0FBSyxLQUNsREksUUFBTyxnQkFBZ0JMLFFBQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTSyxRQUFPLGdCQUFnQixFQUFFLFNBQVMsS0FDeEYsYUFBYUwsT0FBTTtBQUN4QixNQUFJLENBQUNNLFVBQVNBLE9BQU0sY0FBYyxPQUFPO0FBQ3ZDLFlBQVEsT0FBTyxNQUFNLHdCQUF3QixLQUFLLFFBQVEsY0FBYyxLQUFLLEtBQUssTUFBTSxFQUFFO0FBQUEsQ0FBSTtBQUM5RixXQUFPO0FBQUEsRUFDVDtBQUNBLFFBQU0sU0FBUyxLQUFLLFdBQVdBLE9BQU0sU0FBUyxTQUFTO0FBRXZELFFBQU1DLFFBQU8sTUFBTSxpQkFBaUIsUUFBUSxJQUFJLENBQUM7QUFDakQsUUFBTSxRQUFRLEtBQUssQ0FBQ0EsTUFBSyxJQUFJLFdBQVcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLFFBQU1DLFVBQVMsbUJBQW1CO0FBRWxDLE1BQUk7QUFDSixNQUFJLFNBQVMsQ0FBQztBQUNkLE1BQUksS0FBSyxRQUFRO0FBQ2YsVUFBTSxPQUFPLEtBQUssT0FBTyxTQUFTLEdBQUcsSUFBSSxLQUFLLFNBQVNULE9BQUssWUFBWVEsTUFBSyxJQUFJLEdBQUcsR0FBRyxLQUFLLE1BQU0sUUFBUTtBQUMxRyxVQUFNLFNBQVMsTUFBTSxZQUFZLElBQUk7QUFDckMsY0FBVSxZQUFZLEVBQUUsTUFBTSxRQUFRLE9BQU8sT0FBTyxDQUFDO0FBQ3JELGFBQVMsT0FBTztBQUFBLEVBQ2xCLE9BQU87QUFDTCxjQUFVLGNBQWMsRUFBRSxLQUFLQSxNQUFLLEtBQUssTUFBTUEsTUFBSyxLQUFLLENBQUM7QUFBQSxFQUM1RDtBQUVBLFFBQU0sVUFBVSxDQUFDLFVBQVU7QUFDekIsV0FBTyxLQUFLLEtBQUs7QUFDakIsWUFBUSxPQUFPLEtBQUs7QUFDcEIsUUFBSSxLQUFLLFdBQVksU0FBUSxPQUFPLE1BQU0sS0FBSyxVQUFVLEtBQUssSUFBSSxJQUFJO0FBQUEsRUFDeEU7QUFFQSxRQUFNLFlBQVksTUFBTSxVQUFVO0FBQ2xDLFFBQU0sYUFBYSxZQUFZLEdBQUcsS0FBSyxNQUFNO0FBQUE7QUFBQTtBQUFBLEVBQXNCLFNBQVMsS0FBSyxLQUFLO0FBQ3RGLFFBQU0sRUFBRSxRQUFRLElBQUksb0JBQW9CLFlBQVksb0JBQUksSUFBSSxDQUFDO0FBQzdELFVBQVEsVUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBRXBFLFFBQU0sVUFBVSxZQUFZLE1BQU07QUFDbEMsUUFBTSxlQUFlLElBQUksSUFBSUEsTUFBSyxRQUFRLE1BQU07QUFDaEQsUUFBTSxFQUFFLE9BQU8sU0FBUyxJQUFJLGNBQWM7QUFBQSxJQUN4QyxLQUFLQSxNQUFLO0FBQUEsSUFDVixTQUFTQSxNQUFLO0FBQUEsSUFDZCxRQUFRQSxNQUFLO0FBQUEsSUFDYixRQUFBQztBQUFBLElBQ0EsUUFBUUQsTUFBSztBQUFBLElBQ2IsVUFBVUEsTUFBSyxJQUFJLE1BQU07QUFBQSxJQUN6QixXQUFXLENBQUM7QUFBQSxJQUNaLGNBQWMsS0FBSyxnQkFBZ0I7QUFBQSxFQUNyQyxDQUFDO0FBRUQsTUFBSSxPQUFPO0FBQ1gsTUFBSUQsT0FBTSxhQUFhLFNBQVM7QUFDOUIsV0FBTyxNQUFNLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxJQUFJO0FBQ2pELFFBQUksQ0FBQyxNQUFNO0FBQ1QsY0FBUSxPQUFPLE1BQU0sa0VBQWtFO0FBQ3ZGLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLE1BQUksYUFBVUEsT0FBTSxJQUFJLEdBQUcsU0FBUyxTQUFNLE1BQU0sS0FBSyxFQUFFLGlCQUFjLFFBQVEsRUFBRSxFQUFFO0FBQ2pGLE1BQUksV0FBVztBQUNmLFFBQU0sU0FBUyxNQUFNLFFBQVE7QUFBQSxJQUMzQixTQUFTLFFBQVE7QUFBQSxJQUNqQjtBQUFBLElBQ0E7QUFBQSxJQUNBLFdBQVdBLE9BQU07QUFBQSxJQUNqQjtBQUFBLElBQ0E7QUFBQSxJQUNBLFFBQVEsa0JBQWtCO0FBQUEsTUFDeEIsS0FBS0MsTUFBSztBQUFBLE1BQ1YsY0FBY0EsTUFBSyxlQUFlO0FBQUEsTUFDbEMsUUFBUUEsTUFBSyxPQUFPLEtBQUs7QUFBQSxNQUN6QixpQkFBaUIsWUFBWSxNQUFNQSxNQUFLLE9BQU8sS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDLENBQUMsR0FBR0EsTUFBSyxJQUFJO0FBQUEsSUFDbEYsQ0FBQztBQUFBLElBQ0QsVUFBVSxDQUFDLFVBQVU7QUFDbkIsVUFBSSxNQUFNLFNBQVMsV0FBWSxhQUFZLE1BQU07QUFDakQsVUFBSSxNQUFNLFNBQVMsaUJBQWlCO0FBQ2xDLGNBQU0sUUFBUSxTQUFTLFFBQVEsR0FBRyxFQUFFO0FBQ3BDLFlBQUksWUFBTyxPQUFPLFFBQVEsTUFBTSxLQUFLLFNBQVMsSUFBSSxLQUFLLE9BQU8sU0FBUyxFQUFFLEVBQUU7QUFBQSxNQUM3RTtBQUNBLFVBQUksTUFBTSxTQUFTLGFBQWMsS0FBSSxZQUFPLE1BQU0sS0FBSyxTQUFTLElBQUksS0FBSyxNQUFNLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0FBQUEsSUFDdEc7QUFBQSxFQUNGLENBQUM7QUFFRCxNQUFJLFNBQVUsU0FBUSxVQUFVLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFDO0FBQy9ELGFBQVcsV0FBVyxPQUFPLFNBQVUsU0FBUSxVQUFVLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNoRixhQUFXLFNBQVMsU0FBUyxRQUFTLFNBQVEsVUFBVSxhQUFhLEtBQUssQ0FBQztBQUMzRSxhQUFXLFFBQVFBLE1BQUssUUFBUSxRQUFRO0FBQ3RDLFFBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFHLFNBQVEsVUFBVSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUFBLEVBQzFFO0FBQ0EsTUFBSSxPQUFPLE1BQU8sU0FBUSxVQUFVLFNBQVMsRUFBRSxPQUFPRCxPQUFNLE1BQU0sT0FBTyxPQUFPLE9BQU8sWUFBWSxPQUFPLGlCQUFpQixDQUFDLENBQUM7QUFDN0gsTUFBSSxPQUFPLFlBQWEsU0FBUSxVQUFVLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFFMUQsUUFBTSxVQUFVRSxRQUFPLFFBQVE7QUFDL0IsTUFBSSxVQUFVLEVBQUcsS0FBSSxhQUFhLE9BQU8sb0JBQW9CLFlBQVksSUFBSSxLQUFLLEdBQUcsRUFBRTtBQUN2RixFQUFBQSxRQUFPLFFBQVE7QUFDZixRQUFNRCxNQUFLLElBQUksU0FBUyxFQUFFLE1BQU0sTUFBTTtBQUFBLEVBQUMsQ0FBQztBQUV4QyxRQUFNLE9BQU8sT0FBTyxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxlQUFlLE9BQU8sRUFBRSxZQUFZLFlBQVksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsV0FBVztBQUNwSSxRQUFNLFVBQVU7QUFBQSxJQUNkO0FBQUEsSUFDQSxTQUFTLFFBQVE7QUFBQSxJQUNqQixhQUFhLFFBQVE7QUFBQSxJQUNyQixPQUFPRCxPQUFNO0FBQUEsSUFDYixPQUFPLE9BQU87QUFBQSxJQUNkLE1BQU0sYUFBYSxVQUFVTixTQUFRTSxPQUFNLElBQUksR0FBRyxPQUFPLEtBQUs7QUFBQSxJQUM5RCxXQUFXLFNBQVMsUUFBUTtBQUFBLElBQzVCLGFBQWEsT0FBTztBQUFBLElBQ3BCLFlBQVksS0FBSyxJQUFJLElBQUk7QUFBQSxFQUMzQjtBQUVBLE1BQUksS0FBSyxLQUFNLFNBQVEsT0FBTyxNQUFNLEtBQUssVUFBVSxPQUFPLElBQUksSUFBSTtBQUFBLFdBQ3pELEtBQUssV0FBWSxTQUFRLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRSxNQUFNLFVBQVUsR0FBRyxTQUFTLE1BQU0sUUFBVyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJO0FBQUEsTUFDaEksU0FBUSxPQUFPLE1BQU0sT0FBTyxJQUFJO0FBRXJDLFNBQU8sT0FBTyxjQUFjLElBQUk7QUFDbEM7QUFsTEE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7OztBQ2xCQSxTQUFTLGdCQUFBRyxxQkFBb0I7QUFDN0IsU0FBUyxhQUFhOzs7QUNEZixJQUFNLFFBQVE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFCZCxTQUFTLFVBQVUsTUFBTTtBQUM5QixRQUFNLE9BQU8sRUFBRSxNQUFNLGNBQWM7QUFDbkMsUUFBTSxZQUFZLENBQUMsTUFBTSxNQUFNO0FBQzdCLFFBQUksSUFBSSxLQUFLLEtBQUssT0FBUSxPQUFNLElBQUksTUFBTSxHQUFHLElBQUksbUJBQW1CO0FBQ3BFLFdBQU8sS0FBSyxJQUFJLENBQUM7QUFBQSxFQUNuQjtBQUVBLFdBQVMsSUFBSSxHQUFHLElBQUksS0FBSyxRQUFRLEtBQUs7QUFDcEMsVUFBTSxNQUFNLEtBQUssQ0FBQztBQUNsQixRQUFJLFFBQVEsUUFBUSxRQUFRLFdBQVc7QUFDckMsV0FBSyxPQUFPO0FBQ1osV0FBSyxTQUFTLFVBQVUsS0FBSyxDQUFDO0FBQzlCO0FBQUEsSUFDRixXQUFXLFFBQVEsU0FBVSxNQUFLLE9BQU87QUFBQSxhQUNoQyxRQUFRLGdCQUFpQixNQUFLLGFBQWE7QUFBQSxhQUMzQyxRQUFRLFFBQVEsUUFBUSxXQUFXO0FBQzFDLFdBQUssUUFBUSxVQUFVLEtBQUssQ0FBQztBQUM3QjtBQUFBLElBQ0YsV0FBVyxRQUFRLFlBQVk7QUFDN0IsWUFBTSxRQUFRLFVBQVUsS0FBSyxDQUFDO0FBQzlCLFVBQUksQ0FBQyxDQUFDLFFBQVEsT0FBTyxVQUFVLFFBQVEsS0FBSyxFQUFFLFNBQVMsS0FBSyxHQUFHO0FBQzdELGNBQU0sSUFBSSxNQUFNLG1CQUFtQixLQUFLLGlDQUFpQztBQUFBLE1BQzNFO0FBQ0EsV0FBSyxTQUFTO0FBQ2Q7QUFBQSxJQUNGLFdBQVcsUUFBUSxZQUFZO0FBQzdCLFdBQUssU0FBUyxVQUFVLEtBQUssQ0FBQztBQUM5QjtBQUFBLElBQ0YsV0FBVyxRQUFRLG9CQUFvQjtBQUNyQyxXQUFLLGVBQWUsU0FBUyxVQUFVLEtBQUssQ0FBQyxHQUFHLEVBQUU7QUFDbEQsVUFBSSxDQUFDLE9BQU8sU0FBUyxLQUFLLFlBQVksS0FBSyxLQUFLLGVBQWUsR0FBRztBQUNoRSxjQUFNLElBQUksTUFBTSw2Q0FBNkM7QUFBQSxNQUMvRDtBQUNBO0FBQUEsSUFDRixXQUFXLFFBQVEsWUFBYSxNQUFLLE9BQU87QUFBQSxhQUNuQyxRQUFRLFFBQVEsUUFBUSxVQUFXLE1BQUssUUFBUTtBQUFBLGFBQ2hELFFBQVEsUUFBUSxRQUFRLFNBQVUsTUFBSyxPQUFPO0FBQUEsYUFDOUMsUUFBUSxRQUFRLFFBQVEsWUFBYSxNQUFLLE9BQU87QUFBQSxRQUNyRCxPQUFNLElBQUksTUFBTSxxQkFBcUIsR0FBRyxHQUFHO0FBQUEsRUFDbEQ7QUFFQSxNQUFJLEtBQUssU0FBUyxjQUFjLENBQUMsS0FBSyxRQUFRLEtBQUssRUFBRyxPQUFNLElBQUksTUFBTSxnQ0FBZ0M7QUFDdEcsU0FBTztBQUNUOzs7QUQ3REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FFVk8sU0FBUyxvQkFBb0IsRUFBRSxTQUFTLE1BQU07QUFBQyxHQUFHLFdBQVcsTUFBTTtBQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUc7QUFDbkYsUUFBTUMsV0FBVSxvQkFBSSxJQUFJO0FBQ3hCLE1BQUksU0FBUztBQUViLFNBQU87QUFBQSxJQUNMLFNBQVMsY0FBYyxNQUFNO0FBQzNCLFlBQU0sVUFBVSxLQUFLLElBQUksR0FBRyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BELFlBQU0sS0FBSyxPQUFPLFFBQVE7QUFDMUIsWUFBTSxLQUFLLEtBQUssSUFBSSxJQUFJLFVBQVU7QUFDbEMsWUFBTSxRQUFRLFdBQVcsTUFBTTtBQUM3QixRQUFBQSxTQUFRLE9BQU8sRUFBRTtBQUNqQixpQkFBUztBQUNULGVBQU8sRUFBRSxJQUFJLE1BQU0sR0FBRyxDQUFDO0FBQUEsTUFDekIsR0FBRyxVQUFVLEdBQUk7QUFDakIsTUFBQUEsU0FBUSxJQUFJLElBQUksRUFBRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUM7QUFDdkMsZUFBUztBQUNULGFBQU8sRUFBRSxJQUFJLElBQUksUUFBUTtBQUFBLElBQzNCO0FBQUEsSUFDQSxPQUFPLElBQUk7QUFDVCxZQUFNLFNBQVNBLFNBQVEsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNyQyxVQUFJLENBQUMsT0FBUSxPQUFNLElBQUksTUFBTSw4QkFBOEIsRUFBRSxFQUFFO0FBQy9ELG1CQUFhLE9BQU8sS0FBSztBQUN6QixNQUFBQSxTQUFRLE9BQU8sT0FBTyxFQUFFLENBQUM7QUFDekIsZUFBUztBQUNULGFBQU8sRUFBRSxJQUFJLE9BQU8sSUFBSSxXQUFXLEtBQUs7QUFBQSxJQUMxQztBQUFBLElBQ0EsT0FBTztBQUNMLGFBQU8sQ0FBQyxHQUFHQSxTQUFRLE9BQU8sQ0FBQyxFQUN4QixJQUFJLENBQUMsRUFBRSxJQUFJLE1BQU0sR0FBRyxPQUFPLEVBQUUsSUFBSSxNQUFNLEdBQUcsRUFBRSxFQUM1QyxLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7QUFBQSxJQUMvQjtBQUFBLElBQ0EsVUFBVTtBQUNSLGFBQU9BLFNBQVE7QUFBQSxJQUNqQjtBQUFBLElBQ0EsWUFBWTtBQUNWLGlCQUFXLFVBQVVBLFNBQVEsT0FBTyxFQUFHLGNBQWEsT0FBTyxLQUFLO0FBQ2hFLE1BQUFBLFNBQVEsTUFBTTtBQUFBLElBQ2hCO0FBQUEsRUFDRjtBQUNGOzs7QUNsQ0E7QUFDQTtBQUNBO0FBUEEsU0FBUyxjQUFBQyxtQkFBa0I7QUFDM0IsU0FBUyxhQUFBQyxtQkFBaUI7QUFDMUIsU0FBUyxXQUFBQyxnQkFBZTtBQUN4QixTQUFTLFFBQUFDLGNBQVk7QUFDckIsU0FBUyxnQkFBQUMsZUFBYyxRQUFBQyxPQUFNLGFBQUFDLFlBQVcsU0FBUyxVQUFVLFlBQUFDLFdBQVUsY0FBYyxZQUFBQyxXQUFVLGNBQWMsZ0JBQWdCOzs7QUNGM0g7QUFGQSxTQUFTLGNBQUFDLGFBQVksWUFBQUMsWUFBVSxXQUFBQyxnQkFBZTtBQUM5QyxTQUFTLFFBQUFDLGNBQVk7QUFHckIsSUFBTSx3QkFBd0I7QUFFOUIsZUFBc0IsYUFBYSxNQUFNLE1BQU07QUFDN0MsWUFBVSxXQUFXLElBQUksQ0FBQztBQUMxQixRQUFNSCxZQUFXLG1CQUFtQixJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUUsTUFBTSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJO0FBQzVGO0FBRUEsU0FBUyxpQkFBaUIsTUFBTTtBQUM5QixTQUFPLEtBQ0osTUFBTSxJQUFJLEVBQ1YsSUFBSSxDQUFDLFNBQVM7QUFDYixRQUFJO0FBQ0YsYUFBTyxLQUFLLEtBQUssSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJO0FBQUEsSUFDMUMsUUFBUTtBQUNOLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRixDQUFDLEVBQ0EsT0FBTyxPQUFPO0FBQ25CO0FBRUEsZUFBZSxZQUFZLE1BQU1JLFFBQU87QUFDdEMsTUFBSTtBQUNGLFVBQU0sVUFBVSxpQkFBaUIsTUFBTUgsV0FBUyxNQUFNLE9BQU8sQ0FBQztBQUM5RCxXQUFPLFFBQ0osT0FBTyxDQUFDLE1BQU0sT0FBTyxFQUFFLFNBQVMsWUFBWSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQ3pELE1BQU0sQ0FBQyxxQkFBcUIsRUFDNUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsTUFBTSxHQUFHLE9BQUFHLE9BQU0sRUFBRTtBQUFBLEVBQ3hELFFBQVE7QUFDTixXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0Y7QUFFTyxTQUFTLG1CQUFtQixNQUFNO0FBQ3ZDLFNBQU8sWUFBWSxtQkFBbUIsSUFBSSxHQUFHLFNBQVM7QUFDeEQ7QUFFQSxlQUFzQixvQkFBb0I7QUFDeEMsUUFBTSxjQUFjRCxPQUFLLFNBQVMsR0FBRyxVQUFVO0FBQy9DLE1BQUksV0FBVyxDQUFDO0FBQ2hCLE1BQUk7QUFDRixlQUFXLE1BQU1ELFNBQVEsV0FBVztBQUFBLEVBQ3RDLFFBQVE7QUFBQSxFQUFDO0FBQ1QsUUFBTSxTQUFTLE1BQU0sUUFBUTtBQUFBLElBQzNCLFNBQVMsSUFBSSxDQUFDLE1BQU0sWUFBWUMsT0FBSyxhQUFhLEdBQUcsZUFBZSxHQUFHLFlBQVksQ0FBQztBQUFBLEVBQ3RGO0FBQ0EsU0FBTyxPQUFPLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEdBQUcscUJBQXFCO0FBQ2pGOzs7QUR6Q0E7QUFDQTtBQUNBOzs7QUVSQTtBQUhBLFNBQVMsV0FBQUUsVUFBUyxRQUFBQyxhQUFZO0FBQzlCLFNBQVMsUUFBQUMsY0FBWTtBQUNyQixTQUFTLHFCQUFxQjtBQUd2QixTQUFTLGlCQUFpQjtBQUMvQixTQUFPQSxPQUFLLFNBQVMsR0FBRyxPQUFPO0FBQ2pDO0FBRU8sU0FBUyxnQkFBZ0IsTUFBTTtBQUNwQyxTQUFPQSxPQUFLLE1BQU0sU0FBUyxPQUFPO0FBQ3BDO0FBRUEsU0FBUyxTQUFTLE1BQU0sTUFBTTtBQUM1QixNQUFJLENBQUMsUUFBUSxPQUFPLFNBQVMsU0FBVSxPQUFNLElBQUksTUFBTSxxQ0FBcUM7QUFDNUYsTUFBSSxPQUFPLEtBQUssU0FBUyxZQUFZLENBQUMsS0FBSyxLQUFNLE9BQU0sSUFBSSxNQUFNLDRCQUE0QjtBQUM3RixNQUFJLE9BQU8sS0FBSyxnQkFBZ0IsU0FBVSxPQUFNLElBQUksTUFBTSxtQ0FBbUM7QUFDN0YsTUFBSSxPQUFPLEtBQUssWUFBWSxXQUFZLE9BQU0sSUFBSSxNQUFNLGlDQUFpQztBQUN6RixNQUFJLENBQUMsS0FBSyxVQUFVLE9BQU8sS0FBSyxXQUFXLFNBQVUsT0FBTSxJQUFJLE1BQU0sK0JBQStCO0FBQ3BHLFNBQU8sRUFBRSxHQUFHLE1BQU0sT0FBTyxLQUFLO0FBQ2hDO0FBRUEsZUFBZSxTQUFTLE1BQU0sU0FBUztBQUNyQyxRQUFNLEVBQUUsUUFBUSxJQUFJLE1BQU1ELE1BQUssSUFBSTtBQUNuQyxRQUFNLFNBQVMsTUFBTSxPQUFPLEdBQUcsY0FBYyxJQUFJLEVBQUUsSUFBSSxNQUFNLE9BQU87QUFDcEUsUUFBTSxXQUFXLE9BQU87QUFDeEIsUUFBTSxPQUFPLE9BQU8sYUFBYSxhQUFhLE1BQU0sU0FBUyxPQUFPLElBQUk7QUFDeEUsU0FBTyxTQUFTLE1BQU0sSUFBSTtBQUM1QjtBQUVBLGVBQWVFLFNBQVEsS0FBSyxTQUFTLFFBQVE7QUFDM0MsTUFBSSxRQUFRLENBQUM7QUFDYixNQUFJO0FBQ0YsWUFBUSxNQUFNSCxTQUFRLEdBQUc7QUFBQSxFQUMzQixRQUFRO0FBQ04sV0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFO0FBQUEsRUFDakM7QUFDQSxRQUFNLFFBQVEsQ0FBQztBQUNmLFFBQU0sU0FBUyxDQUFDO0FBQ2hCLGFBQVcsUUFBUSxPQUFPO0FBQ3hCLFFBQUksQ0FBQyxLQUFLLFNBQVMsS0FBSyxLQUFLLENBQUMsS0FBSyxTQUFTLE1BQU0sRUFBRztBQUNyRCxVQUFNLE9BQU9FLE9BQUssS0FBSyxJQUFJO0FBQzNCLFFBQUk7QUFDRixZQUFNLEtBQUssRUFBRSxHQUFJLE1BQU0sU0FBUyxNQUFNLE9BQU8sR0FBSSxPQUFPLENBQUM7QUFBQSxJQUMzRCxTQUFTLEtBQUs7QUFDWixhQUFPLEtBQUssRUFBRSxNQUFNLE9BQU8sT0FBTyxJQUFJLFdBQVcsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUFBLElBQ3ZFO0FBQUEsRUFDRjtBQUNBLFNBQU8sRUFBRSxPQUFPLE9BQU87QUFDekI7QUFFQSxlQUFzQixjQUFjLEVBQUUsS0FBSyxLQUFLLEdBQUc7QUFDakQsUUFBTSxVQUFVLEVBQUUsS0FBSyxLQUFLO0FBQzVCLFFBQU0sU0FBUyxNQUFNQyxTQUFRLGVBQWUsR0FBRyxTQUFTLFFBQVE7QUFDaEUsUUFBTSxVQUFVLE1BQU1BLFNBQVEsZ0JBQWdCLElBQUksR0FBRyxTQUFTLFNBQVM7QUFDdkUsUUFBTSxTQUFTLG9CQUFJLElBQUk7QUFDdkIsYUFBVyxRQUFRLENBQUMsR0FBRyxPQUFPLE9BQU8sR0FBRyxRQUFRLEtBQUssRUFBRyxRQUFPLElBQUksS0FBSyxNQUFNLElBQUk7QUFDbEYsU0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLEdBQUcsUUFBUSxNQUFNLEVBQUU7QUFDdEY7OztBRjdDQTtBQUNBOzs7QUdkQSxTQUFTLFlBQUFDLFlBQVUsYUFBQUMsa0JBQWlCO0FBRXBDLGVBQWUsWUFBWSxNQUFNO0FBQy9CLE1BQUk7QUFDRixXQUFPLE1BQU1ELFdBQVMsTUFBTSxPQUFPO0FBQUEsRUFDckMsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFFQSxlQUFzQixZQUFZLE9BQU87QUFDdkMsUUFBTSxXQUFXLENBQUM7QUFDbEIsUUFBTSxVQUFVLENBQUM7QUFDakIsYUFBVyxRQUFRLENBQUMsR0FBRyxLQUFLLEVBQUUsUUFBUSxHQUFHO0FBQ3ZDLFVBQU0sRUFBRSxNQUFNLFFBQVEsTUFBTSxJQUFJLEtBQUs7QUFDckMsVUFBTSxVQUFVLE1BQU0sWUFBWSxJQUFJO0FBQ3RDLFFBQUksWUFBWSxPQUFPO0FBQ3JCLFlBQU1DLFdBQVUsTUFBTSxRQUFRLE9BQU87QUFDckMsZUFBUyxLQUFLLEtBQUssTUFBTTtBQUFBLElBQzNCLE9BQU87QUFDTCxjQUFRLEtBQUssRUFBRSxNQUFNLFFBQVEsS0FBSyxRQUFRLFFBQVEsMEJBQTBCLENBQUM7QUFBQSxJQUMvRTtBQUFBLEVBQ0Y7QUFDQSxTQUFPLEVBQUUsVUFBVSxRQUFRO0FBQzdCO0FBRUEsZUFBc0IsYUFBYSxPQUFPO0FBQ3hDLFFBQU0sWUFBWSxDQUFDO0FBQ25CLFFBQU0sVUFBVSxDQUFDO0FBQ2pCLGFBQVcsUUFBUSxPQUFPO0FBQ3hCLFVBQU0sRUFBRSxNQUFNLFFBQVEsTUFBTSxJQUFJLEtBQUs7QUFDckMsVUFBTSxVQUFVLE1BQU0sWUFBWSxJQUFJO0FBQ3RDLFFBQUksWUFBWSxRQUFRO0FBQ3RCLFlBQU1BLFdBQVUsTUFBTSxPQUFPLE9BQU87QUFDcEMsZ0JBQVUsS0FBSyxLQUFLLE1BQU07QUFBQSxJQUM1QixPQUFPO0FBQ0wsY0FBUSxLQUFLLEVBQUUsTUFBTSxRQUFRLEtBQUssUUFBUSxRQUFRLDRCQUE0QixDQUFDO0FBQUEsSUFDakY7QUFBQSxFQUNGO0FBQ0EsU0FBTyxFQUFFLFdBQVcsUUFBUTtBQUM5Qjs7O0FIeEJBO0FBQ0E7OztBSWpCTyxTQUFTLHFCQUFxQixZQUFZLEVBQUUsUUFBUSxlQUFlLElBQUksQ0FBQyxHQUFHO0FBQ2hGLFFBQU0sUUFBUSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7QUFDL0IsYUFBVyxRQUFRLFlBQVk7QUFDN0IsUUFBSSxLQUFLLFNBQVMsUUFBUTtBQUN4QixZQUFNLEtBQUssVUFBVSxJQUFJLEtBQUssTUFBTSxFQUFFO0FBQUEsSUFDeEMsV0FBVyxLQUFLLFNBQVMsYUFBYTtBQUNwQyxZQUFNLEtBQUssS0FBSyxjQUFjLEdBQUcsS0FBSyxJQUFJO0FBQUE7QUFBQSxtQkFBd0IsS0FBSyxNQUFNLEVBQUU7QUFBQSxJQUNqRixXQUFXLEtBQUssU0FBUyxRQUFRO0FBQy9CLFlBQU0sUUFBUSxLQUFLLE9BQU8sTUFBTSxLQUFLLEtBQUssU0FBUyxLQUFLLEtBQUssS0FBSyxTQUFTLE1BQU07QUFDakYsWUFBTSxLQUFLLEtBQUssS0FBSyxXQUFXLGFBQWEsV0FBTSxRQUFHLE1BQU0sS0FBSyxJQUFJLE1BQU0sS0FBSyxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUU7QUFBQSxJQUNyRyxXQUFXLEtBQUssU0FBUyxXQUFXO0FBQ2xDLFlBQU0sS0FBSyxjQUFjLEtBQUssSUFBSSxJQUFJLEVBQUU7QUFBQSxJQUMxQztBQUFBLEVBQ0Y7QUFDQSxTQUFPLE1BQU0sS0FBSyxJQUFJO0FBQ3hCOzs7QUpJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBS3hCQTtBQUVPLFNBQVMsa0JBQWtCLEVBQUUsT0FBTyxTQUFBQyxTQUFRLEdBQUc7QUFDcEQsTUFBSSxNQUFNLFNBQVMsSUFBSSxFQUFHLFFBQU87QUFDakMsUUFBTSxJQUFJLE1BQU0sTUFBTSxnQkFBZ0I7QUFDdEMsTUFBSSxDQUFDLEVBQUcsUUFBTztBQUNmLFFBQU0sU0FBU0EsU0FBUSxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUM7QUFDekMsTUFBSSxDQUFDLFVBQVUsT0FBTyxXQUFXLEVBQUcsUUFBTztBQUMzQyxRQUFNLFNBQVMsRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHO0FBQzdCLFFBQU0sVUFBVSxPQUFPLE9BQU8sU0FBUyxDQUFDO0FBQ3hDLFFBQU0sVUFBVSxPQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDdEMsT0FBTyxDQUFDLENBQUMsS0FBSyxNQUFNLFNBQVMsQ0FBQyxFQUM5QixLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQzFCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDbkIsU0FBTyxFQUFFLFNBQVMsU0FBUyxPQUFPLE1BQU0sU0FBUyxRQUFRLE9BQU87QUFDbEU7QUFFTyxTQUFTLGdCQUFnQixPQUFPLEtBQUssV0FBVztBQUNyRCxTQUFPLE1BQU0sTUFBTSxHQUFHLElBQUksS0FBSyxJQUFJLFlBQVk7QUFDakQ7OztBTE1BOzs7QU0xQkEsU0FBUyxZQUFBQyxpQkFBZ0I7QUFDekIsT0FBT0MsU0FBUTtBQUVmLElBQU0sWUFBWTtBQUNsQixJQUFNQyxPQUFNO0FBRVosSUFBSSxTQUFTLEVBQUUsSUFBSSxHQUFHLEtBQUssTUFBTSxPQUFPLENBQUMsRUFBRTtBQUUzQyxTQUFTLGFBQWEsS0FBSztBQUN6QixTQUFPLElBQUksUUFBUSxDQUFDQyxhQUFZO0FBQzlCLFVBQU0sT0FBTyxDQUFDLFdBQVcsWUFBWSxVQUFVLGVBQWUsa0JBQWtCO0FBQ2hGLElBQUFILFVBQVMsTUFBTSxNQUFNLEVBQUUsS0FBSyxXQUFXLEtBQUssT0FBTyxLQUFLLEdBQUcsQ0FBQyxLQUFLLFdBQVc7QUFDMUUsTUFBQUcsU0FBUSxPQUFPLENBQUMsU0FBUyxPQUFPLE9BQU8sTUFBTSxJQUFJLEVBQUUsT0FBTyxPQUFPLENBQUM7QUFBQSxJQUNwRSxDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7QUFFQSxlQUFzQixVQUFVLEtBQUs7QUFDbkMsTUFBSSxPQUFPLFFBQVEsT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUtELEtBQUssUUFBTyxPQUFPO0FBQ3RFLE1BQUksUUFBUSxNQUFNLGFBQWEsR0FBRztBQUNsQyxNQUFJLENBQUMsT0FBTztBQUNWLFlBQVEsTUFBTUQsSUFBRyxRQUFRO0FBQUEsTUFDdkI7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLEtBQUs7QUFBQSxNQUNMLFFBQVEsQ0FBQyxzQkFBc0IsWUFBWTtBQUFBLElBQzdDLENBQUMsRUFBRSxNQUFNLE1BQU0sQ0FBQyxDQUFDO0FBQUEsRUFDbkI7QUFDQSxXQUFTLEVBQUUsSUFBSSxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU8sTUFBTSxNQUFNLEdBQUcsU0FBUyxFQUFFO0FBQ2pFLFNBQU8sT0FBTztBQUNoQjs7O0FDOUJBLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMsb0JBQW9CO0FBRTdCLElBQU0sUUFBUTtBQUFBLEVBQ1osSUFBSTtBQUFBLEVBQU0sS0FBSztBQUFBLEVBQU0sS0FBSztBQUFBLEVBQU0sS0FBSztBQUFBLEVBQU8sSUFBSTtBQUFBLEVBQU0sS0FBSztBQUFBLEVBQzNELE1BQU07QUFBQSxFQUFRLE9BQU87QUFBQSxFQUFRLElBQUk7QUFBQSxFQUFNLElBQUk7QUFBQSxFQUFVLElBQUk7QUFBQSxFQUFRLElBQUk7QUFBQSxFQUNyRSxJQUFJO0FBQUEsRUFBUSxHQUFHO0FBQUEsRUFBSyxHQUFHO0FBQUEsRUFBSyxLQUFLO0FBQUEsRUFBTyxNQUFNO0FBQUEsRUFBUSxLQUFLO0FBQUEsRUFDM0QsTUFBTTtBQUFBLEVBQVEsS0FBSztBQUFBLEVBQU8sSUFBSTtBQUFBLEVBQVEsTUFBTTtBQUFBLEVBQVEsS0FBSztBQUFBLEVBQ3pELEtBQUs7QUFBQSxFQUFRLE1BQU07QUFBQSxFQUFRLE1BQU07QUFBQSxFQUFRLEtBQUs7QUFBQSxFQUFPLFFBQVE7QUFDL0Q7QUFFTyxTQUFTLFlBQVksTUFBTTtBQUNoQyxRQUFNLE1BQU0sT0FBTyxJQUFJLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVk7QUFDdEQsU0FBTyxNQUFNLEdBQUcsS0FBSztBQUN2QjtBQUVBLElBQU0sUUFBUSxvQkFBSSxJQUFJO0FBQ3RCLElBQU0sVUFBVSxvQkFBSSxJQUFJO0FBQ3hCLElBQU0sU0FBUyxvQkFBSSxJQUFJO0FBQ3ZCLElBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSSxhQUFhLENBQUM7QUFFckMsSUFBTSxtQkFBbUI7QUFFekIsU0FBUyxVQUFVLE1BQU0sTUFBTTtBQUNwQyxRQUFNLFdBQVcsUUFBUSxDQUFDLE9BQU8sSUFBSSxJQUFJLElBQUksT0FBTztBQUNwRCxTQUFPLEtBQ0osTUFBTSxJQUFJLEVBQ1YsSUFBSSxDQUFDLFNBQVM7QUFDYixVQUFNLE1BQU0sR0FBRyxRQUFRO0FBQUEsRUFBSyxJQUFJO0FBQ2hDLFFBQUksTUFBTSxJQUFJLEdBQUcsRUFBRyxRQUFPLE1BQU0sSUFBSSxHQUFHO0FBQ3hDLFNBQUssTUFBTSxVQUFVLEdBQUc7QUFDeEIsV0FBTztBQUFBLEVBQ1QsQ0FBQyxFQUNBLEtBQUssSUFBSTtBQUNkO0FBRUEsU0FBUyxLQUFLLE1BQU0sTUFBTSxLQUFLO0FBQzdCLE1BQUksUUFBUSxJQUFJLEdBQUcsRUFBRztBQUN0QixVQUFRLElBQUksR0FBRztBQUNmLGFBQVcsTUFBTSxNQUFNLE1BQU0sRUFDMUIsS0FBSyxDQUFDLFNBQVMsTUFBTSxJQUFJLEtBQUssS0FBSyxRQUFRLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFDdEQsTUFBTSxNQUFNO0FBQ1gsV0FBTyxJQUFJLElBQUk7QUFDZixVQUFNLElBQUksS0FBSyxJQUFJO0FBQUEsRUFDckIsQ0FBQyxFQUNBLFFBQVEsTUFBTTtBQUNiLFlBQVEsT0FBTyxHQUFHO0FBQ2xCLGVBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQztBQUFBLEVBQ3pCLENBQUM7QUFDTDs7O0FDakRBLFNBQVMsTUFBTSxVQUFVLGVBQWU7OztBQ0F4QyxTQUFTLGdCQUFBRyxxQkFBb0I7QUFFdEIsSUFBTSxpQkFBaUI7QUFFOUIsSUFBTSxDQUFDLGFBQWEsY0FBYyxJQUFJQSxjQUFhLGNBQWM7QUFFMUQsSUFBTSxTQUFTO0FBRWYsU0FBUyxVQUFVLE9BQU87QUFDL0IsaUJBQWUsU0FBUyxjQUFjO0FBQ3hDO0FBRU8sSUFBTSxLQUFLO0FBQ1gsSUFBTSxVQUFVO0FBQ2hCLElBQU0sUUFBUTtBQUNkLElBQU0sUUFBUTtBQUNkLElBQU0sV0FBVztBQUNqQixJQUFNLFlBQVk7QUFDbEIsSUFBTSxNQUFNOzs7QURkbkI7QUFvQk0sY0FDQSxZQURBO0FBbEJOLFNBQVMsU0FBUyxFQUFFLE1BQU0sT0FBTyxRQUFRLE1BQU0sUUFBUSxZQUFZLE9BQU8sWUFBWSxRQUFRLEdBQUc7QUFDL0YsUUFBTSxVQUFVLFdBQVc7QUFDM0IsUUFBTSxjQUFjLFdBQVc7QUFDL0IsUUFBTSxXQUFXLFdBQVc7QUFDNUIsUUFBTUMsVUFBUyxXQUFXO0FBQzFCLFFBQU0sV0FBVyxhQUFhLFdBQVcsTUFBTSxJQUFJLElBQUk7QUFFdkQsUUFBTSxPQUFPLFVBQVUsWUFDbkIsY0FBYyxnQkFDZCxXQUFXLGFBQ1hBLFVBQVMsV0FDVCxhQUFhLDRCQUNiLE9BQU8sSUFBSSxLQUFLLFNBQVMsS0FBSyxLQUFLLFNBQVMsS0FDNUMsV0FBVyxHQUFHLFNBQVMsTUFBTSxJQUFJLFNBQVMsV0FBVyxJQUFJLFNBQVMsT0FBTyxpQkFDekU7QUFFSixTQUNFLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxVQUFVLEVBQUUsR0FDakQ7QUFBQSx3QkFBQyxVQUFLLGVBQUM7QUFBQSxJQUNQLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNoQztBQUFBLGdCQUNHLG9CQUFDLFdBQVEsT0FBTyxPQUFPLEdBQUcsSUFDMUIsb0JBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxlQUFlQSxVQUFTLE1BQU0sV0FBVyxRQUFRLE9BQU8sRUFBRSxHQUFJLHdCQUFjLFdBQU1BLFVBQVMsV0FBTSxXQUFXLFdBQU0sVUFBSTtBQUFBLE1BQ2hKLG9CQUFDLFVBQUssZUFBQztBQUFBLE1BQ1Asb0JBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksYUFBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEtBQUk7QUFBQSxNQUNyRCxvQkFBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEdBQUcsUUFBUSxFQUFFLEdBQ25DLDhCQUFDLFVBQUssT0FBTyxFQUFFLFVBQVUsWUFBWSxPQUFPLEdBQUcsR0FBSSxtQkFBUyxNQUFLLEdBQ25FO0FBQUEsTUFDQSxvQkFBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxlQUFLLElBQUksSUFBRztBQUFBLE9BQzlDO0FBQUEsSUFDQ0EsV0FBVSxTQUNULG9CQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxVQUFVLFdBQVcsR0FBSSxlQUFLLEtBQUssSUFBRztBQUFBLElBRXBFLFVBQVUsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFFBQVEsS0FBSyxjQUFjLEtBQUssS0FBSyxjQUFjLE1BQ3ZGLG9CQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxRQUFRLEtBQUssS0FBSyxNQUFNLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLE1BQU0sSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsV0FBVyxFQUFFLEdBQ3pJO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxRQUFRLE9BQU87QUFBQSxRQUNmLE9BQU8sT0FBTztBQUFBLFFBQ2QsVUFBVSxZQUFZLE9BQU8sSUFBSTtBQUFBLFFBQ2pDO0FBQUEsUUFDQSxTQUFTO0FBQUEsUUFDVCxXQUFXO0FBQUE7QUFBQSxJQUNiLEdBQ0Y7QUFBQSxJQUVELFlBQVksV0FBVyxDQUFDLFdBQ3ZCLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxJQUFJLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUM3RTtBQUFBLDBCQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGVBQUssS0FBSyxJQUFHO0FBQUEsTUFDNUMsU0FBUyxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLE1BQ2pDLG9CQUFDLFVBQWEsT0FBTyxFQUFFLE9BQU8sU0FBUyxVQUFVLFdBQVcsR0FBSSxrQkFBUSxPQUE3RCxDQUFpRSxDQUM3RTtBQUFBLE1BQ0EsU0FBUyxTQUFTLE9BQU8sb0JBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksb0JBQUssU0FBUyxTQUFTLEdBQUcsZUFBYztBQUFBLE9BQ3BHO0FBQUEsS0FFSjtBQUVKO0FBRU8sU0FBUyxPQUFPLEVBQUUsU0FBQUMsVUFBUyxLQUFLLFVBQVUsR0FBRztBQUNsRCxTQUNFLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsT0FBTyxVQUFVLEdBQUcsV0FBVyxFQUFFLEdBQzVEO0FBQUEseUJBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxTQUFTLEdBQ3BDO0FBQUEsMEJBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEVBQUUsR0FBSSxvQkFBUztBQUFBLE1BQzVDLG9CQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxFQUFFLEdBQUksa0NBQVE7QUFBQSxPQUM3QztBQUFBLElBQ0EscUJBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxTQUFTLEdBQ3BDO0FBQUEsMkJBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsNEJBQUMsVUFBSyxPQUFPLEVBQUUsTUFBTSxNQUFNLE9BQU8sT0FBTyxFQUFFLEdBQUksb0JBQVM7QUFBQSxRQUN4RCxvQkFBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxlQUFLQSxRQUFPLFNBQU0sU0FBUyxJQUFHO0FBQUEsU0FDaEU7QUFBQSxNQUNBLG9CQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGVBQUssR0FBRyxJQUFHO0FBQUEsT0FDN0M7QUFBQSxLQUNGO0FBRUo7QUFFTyxTQUFTLFFBQVEsRUFBRSxNQUFNLFFBQVEsR0FBRztBQUN6QyxNQUFJLEtBQUssU0FBUyxRQUFRO0FBQ3hCLFdBQU8sb0JBQUMsWUFBVSxHQUFHLE1BQU0sU0FBa0I7QUFBQSxFQUMvQztBQUVBLE1BQUksS0FBSyxTQUFTLFdBQVc7QUFDM0IsVUFBTSxRQUFRLEtBQUssS0FBSyxNQUFNLElBQUk7QUFDbEMsV0FDRSxxQkFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxFQUFFLEdBQ2pEO0FBQUEsMEJBQUMsVUFBSyxlQUFDO0FBQUEsTUFDUCxxQkFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSw0QkFBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sUUFBUSxLQUFLLEdBQUksZUFBSyxXQUFXLFlBQVksZ0VBQXdELDRDQUFtQztBQUFBLFFBQ3JLLG9CQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHO0FBQUEsUUFDN0Isb0JBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksYUFBRyxNQUFNLE1BQU0sSUFBSSxNQUFNLFdBQVcsSUFBSSxTQUFTLE9BQU8sZ0JBQVk7QUFBQSxTQUN0RztBQUFBLE1BQ0MsV0FDQyxxQkFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsSUFBSSxVQUFVLFVBQVUsR0FBRyxXQUFXLEVBQUUsR0FDNUU7QUFBQSxjQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sTUFDOUIsb0JBQUMsVUFBYSxPQUFPLEVBQUUsT0FBTyxRQUFRLEdBQUksa0JBQVEsT0FBdkMsQ0FBMkMsQ0FDdkQ7QUFBQSxRQUNBLE1BQU0sU0FBUyxPQUFPLG9CQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLG9CQUFLLE1BQU0sU0FBUyxHQUFHLGVBQWM7QUFBQSxTQUM5RjtBQUFBLE9BRUo7QUFBQSxFQUVKO0FBRUEsTUFBSSxLQUFLLFNBQVMsWUFBWTtBQUM1QixVQUFNLFFBQVEsS0FBSyxLQUFLLE1BQU0sSUFBSTtBQUNsQyxXQUNFLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxVQUFVLEVBQUUsR0FDakQ7QUFBQSwwQkFBQyxVQUFLLGVBQUM7QUFBQSxNQUNQLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLDRCQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxRQUFRLEtBQUssR0FBSSw2QkFBYTtBQUFBLFFBQzNELG9CQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHO0FBQUEsUUFDN0Isb0JBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksYUFBRyxNQUFNLE1BQU0sSUFBSSxNQUFNLFdBQVcsSUFBSSxTQUFTLE9BQU8sZ0JBQVk7QUFBQSxTQUN0RztBQUFBLE1BQ0MsV0FDQyxxQkFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsSUFBSSxVQUFVLFVBQVUsR0FBRyxXQUFXLEVBQUUsR0FDNUU7QUFBQSxjQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sTUFDOUIsb0JBQUMsVUFBYSxPQUFPLEVBQUUsT0FBTyxTQUFTLFFBQVEsS0FBSyxHQUFJLGtCQUFRLE9BQXJELENBQXlELENBQ3JFO0FBQUEsUUFDQSxNQUFNLFNBQVMsT0FBTyxvQkFBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxvQkFBSyxNQUFNLFNBQVMsR0FBRyxlQUFjO0FBQUEsU0FDOUY7QUFBQSxPQUVKO0FBQUEsRUFFSjtBQUVBLE1BQUksS0FBSyxTQUFTLFVBQVU7QUFDMUIsV0FDRSxxQkFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxFQUFFLEdBQ2pEO0FBQUEsMEJBQUMsVUFBSyxlQUFDO0FBQUEsTUFDUCxvQkFBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sUUFBUSxLQUFLLEdBQUksb0JBQUssS0FBSyxLQUFLLFFBQVEsK0JBQStCLEVBQUUsQ0FBQyxJQUFHO0FBQUEsT0FDNUc7QUFBQSxFQUVKO0FBRUEsTUFBSSxLQUFLLFNBQVMsU0FBUztBQUN6QixXQUNFLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxVQUFVLEVBQUUsR0FDakQ7QUFBQSwwQkFBQyxVQUFLLGVBQUM7QUFBQSxNQUNQLG9CQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxRQUFRLEtBQUssR0FBSSwyQkFBWSxLQUFLLElBQUksSUFBRztBQUFBLE9BQ3hFO0FBQUEsRUFFSjtBQUVBLE1BQUksS0FBSyxTQUFTLFFBQVE7QUFDeEIsV0FDRSxxQkFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFNBQVMsR0FDcEM7QUFBQSwwQkFBQyxVQUFLLGVBQUM7QUFBQSxNQUNQLG9CQUFDLFNBQUksT0FBTyxFQUFFLElBQUksVUFBVSxlQUFlLFVBQVUsVUFBVSxHQUFHLFVBQVUsRUFBRSxHQUM1RSw4QkFBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFVBQVUsR0FBSSxlQUFLLE1BQUssR0FDaEQ7QUFBQSxPQUNGO0FBQUEsRUFFSjtBQUVBLFFBQU0sT0FBTyxLQUFLLGNBQWMsR0FBRyxLQUFLLElBQUkscUJBQXFCLEtBQUs7QUFDdEUsU0FDRSxxQkFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxFQUFFLEdBQ2pEO0FBQUEsd0JBQUMsVUFBSyxlQUFDO0FBQUEsSUFDUCxvQkFBQyxZQUFTLE1BQVksV0FBc0IsUUFBUSxNQUFNO0FBQUEsS0FDNUQ7QUFFSjs7O0FFdktBLFNBQVMsWUFBQUMsV0FBVSxXQUFXLGdCQUFnQjtBQWlGeEMsU0FDRSxPQUFBQyxNQURGLFFBQUFDLGFBQUE7QUE5RU4sSUFBTSxZQUFZLENBQUMsYUFBYTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU05QixTQUFTLElBQUksQ0FBQyxNQUFNLFFBQVEsRUFBRSxJQUFJLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThEekQsU0FBUyxLQUFLLEVBQUUsVUFBVSxRQUFRLEdBQUc7QUFDMUMsV0FBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxNQUFNLFFBQVEsVUFBVTtBQUMxQixjQUFRO0FBQ1IsWUFBTSxnQkFBZ0I7QUFBQSxJQUN4QjtBQUFBLEVBQ0YsQ0FBQztBQUVELFNBQ0UsZ0JBQUFBLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFFBQVEsUUFBUSxVQUFVLEdBQUcsVUFBVSxFQUFFLEdBQzlFO0FBQUEsb0JBQUFBLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsc0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEdBQUcsTUFBTSxLQUFLLEdBQUcsNEJBQVc7QUFBQSxNQUN6RCxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRztBQUFBLE1BQzdCLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLCtDQUFvQjtBQUFBLE9BQ3JEO0FBQUEsSUFDQSxnQkFBQUEsS0FBQyxVQUFLLGVBQUM7QUFBQSxJQUNQLGdCQUFBQSxLQUFDLGFBQVUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLFNBQU8sTUFBQyxXQUFTLE1BQ2xELDBCQUFBQSxLQUFDRSxXQUFBLEVBQVMsTUFBTSxVQUFVLFFBQVEsR0FBRyxRQUFRLE1BQU0sR0FDckQ7QUFBQSxLQUNGO0FBRUo7OztBQzVGQSxTQUFTLGdCQUFBQyxlQUFjLFFBQVEsTUFBTSxVQUFVLE9BQU8sYUFBQUMsWUFBVyxXQUFXLFVBQVUsWUFBQUMsV0FBVSxtQkFBbUI7QUFFbkg7QUFlTSxTQUNFLE9BQUFDLE1BREYsUUFBQUMsYUFBQTtBQWJDLFNBQVMsUUFBUSxJQUFJO0FBQzFCLFFBQU0sSUFBSSxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU8sS0FBSyxJQUFJLElBQUksTUFBTSxHQUFJLENBQUM7QUFDMUQsTUFBSSxJQUFJLEdBQUksUUFBTyxHQUFHLENBQUM7QUFDdkIsUUFBTSxJQUFJLEtBQUssTUFBTSxJQUFJLEVBQUU7QUFDM0IsTUFBSSxJQUFJLEdBQUksUUFBTyxHQUFHLENBQUM7QUFDdkIsUUFBTSxJQUFJLEtBQUssTUFBTSxJQUFJLEVBQUU7QUFDM0IsTUFBSSxJQUFJLEdBQUksUUFBTyxHQUFHLENBQUM7QUFDdkIsU0FBTyxHQUFHLEtBQUssTUFBTSxJQUFJLEVBQUUsQ0FBQztBQUM5QjtBQUVBLFNBQVMsV0FBVyxFQUFFLE9BQU8sTUFBTSxPQUFPLFNBQVMsR0FBRztBQUNwRCxTQUNFLGdCQUFBQSxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxVQUFVLEdBQUcsV0FBVyxFQUFFLEdBQy9EO0FBQUEsb0JBQUFBLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsc0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEdBQUcsTUFBTSxLQUFLLEdBQUksaUJBQU07QUFBQSxNQUNyRCxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRztBQUFBLE1BQzVCO0FBQUEsT0FDSDtBQUFBLElBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksZ0JBQUs7QUFBQSxJQUNwQztBQUFBLEtBQ0g7QUFFSjtBQUVPLFNBQVMsVUFBVSxFQUFFLFFBQVEsT0FBTyxHQUFHO0FBQzVDLFNBQ0UsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2hDLGlCQUFPLElBQUksQ0FBQyxHQUFHLE1BQ2QsZ0JBQUFBLEtBQUMsVUFBYSxPQUFPLEVBQUUsT0FBTyxNQUFNLFNBQVMsT0FBTyxJQUFJLE9BQU8sTUFBTSxNQUFNLE9BQU8sR0FBSSxhQUFHLElBQUksSUFBSSxPQUFPLEVBQUUsR0FBRyxDQUFDLE1BQW5HLENBQXNHLENBQ2xILEdBQ0g7QUFFSjtBQUVPLFNBQVMsV0FBVyxFQUFFLFFBQUFFLFNBQVEsU0FBUyxhQUFhLFNBQVMsUUFBUSxlQUFlLFFBQVEsR0FBRztBQUNwRyxRQUFNLENBQUMsUUFBUSxTQUFTLElBQUlDLGNBQWFELFFBQU8sQ0FBQyxLQUFLLElBQUk7QUFFMUQsRUFBQUUsVUFBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxDQUFDLFFBQVM7QUFDZCxRQUFJLE1BQU0sUUFBUSxNQUFNLFFBQVEsT0FBTyxPQUFPLEdBQUc7QUFDL0Msb0JBQWMsT0FBTyxDQUFDO0FBQ3RCLFlBQU0sZ0JBQWdCO0FBQUEsSUFDeEI7QUFBQSxFQUNGLENBQUM7QUFFRCxTQUNFLGdCQUFBSixLQUFDLGNBQVcsT0FBTSxnQkFBZSxNQUFLLHVGQUNwQywwQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsUUFBUSxJQUFJLFdBQVcsRUFBRSxHQUM5RCwwQkFBQUE7QUFBQSxJQUFDO0FBQUE7QUFBQSxNQUNDLFNBQU87QUFBQSxNQUNQLE9BQU9FO0FBQUEsTUFDUDtBQUFBLE1BQ0EsYUFBWTtBQUFBLE1BQ1osUUFBUSxDQUFDLEdBQUcsTUFBTSxXQUFXLEdBQUcsRUFBRSxJQUFJLEtBQUs7QUFBQSxNQUMzQyxnQkFBZ0I7QUFBQSxNQUNoQixVQUFVO0FBQUEsTUFDVixVQUFVO0FBQUEsTUFDVixXQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsTUFDTCxZQUFZO0FBQUEsTUFDWixXQUFXO0FBQUEsTUFDWCxZQUFZLENBQUMsR0FBRyxFQUFFLFVBQVUsU0FBUyxFQUFFLE1BQU07QUFDM0MsY0FBTSxNQUFNLEVBQUUsY0FBYztBQUM1QixlQUNFLGdCQUFBRCxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxJQUFJLFdBQVksSUFBSSxPQUFPLElBQUksWUFBYSxNQUFNLFVBQVUsRUFBRSxHQUNuRztBQUFBLDBCQUFBQSxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLDRCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLE9BQU8sV0FBVyxVQUFVLE1BQU0sUUFBUSxHQUFHLEdBQUksWUFBRSxNQUFLO0FBQUEsWUFDbEYsRUFBRSxTQUFTLFdBQVcsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxXQUFXLFVBQVUsT0FBTyxFQUFFLEdBQUkscUJBQUs7QUFBQSxZQUNuRixFQUFFLFNBQVMsZUFBZSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFdBQVcsVUFBVSxNQUFNLEdBQUksMkJBQWE7QUFBQSxZQUM3RixnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRztBQUFBLFlBQzdCLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sV0FBVyxVQUFVLE1BQU0sR0FDOUMsZ0JBQU0sU0FBUyxFQUFFLE9BQU8sS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFVLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFBRSxhQUFhLFVBQVUsaUJBQWlCLGlCQUNoSTtBQUFBLGFBQ0Y7QUFBQSxVQUNBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sV0FBVyxVQUFVLE1BQU0sR0FBSSxZQUFFLE1BQUs7QUFBQSxXQUM5RDtBQUFBLE1BRUo7QUFBQTtBQUFBLEVBQ0YsR0FDRixHQUNGO0FBRUo7QUFFTyxTQUFTLGFBQWEsRUFBRSxTQUFTLFFBQVEsWUFBWSxTQUFTLFFBQVEsUUFBUSxHQUFHO0FBQ3RGLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUcsY0FBYSxRQUFRLENBQUMsS0FBSyxJQUFJO0FBQzdELFFBQU0sQ0FBQyxPQUFPLFFBQVEsSUFBSUEsY0FBYSxFQUFFO0FBQ3pDLFFBQU0sV0FBVyxRQUFRLEtBQUssQ0FBQyxNQUFNLFdBQVcsTUFBTSxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUM7QUFFckUsU0FDRSxnQkFBQUg7QUFBQSxJQUFDO0FBQUE7QUFBQSxNQUNDLE9BQU07QUFBQSxNQUNOLE1BQUs7QUFBQSxNQUNMLE9BQU8sZ0JBQUFBLEtBQUMsYUFBVSxRQUFnQixRQUFRLFlBQVk7QUFBQSxNQUV0RCwwQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE9BQU8sUUFBUSxJQUFJLFdBQVcsR0FBRyxLQUFLLEVBQUUsR0FDbkU7QUFBQSx3QkFBQUQsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsT0FBTyxNQUFNLEdBQ2xELDBCQUFBQTtBQUFBLFVBQUM7QUFBQTtBQUFBLFlBQ0MsU0FBTztBQUFBLFlBQ1AsT0FBTztBQUFBLFlBQ1A7QUFBQSxZQUNBLGFBQVk7QUFBQSxZQUNaLFFBQVEsQ0FBQyxHQUFHLE1BQU0sV0FBVyxHQUFHLEVBQUUsSUFBSSxLQUFLO0FBQUEsWUFDM0MsVUFBVTtBQUFBLFlBQ1YsZ0JBQWdCLENBQUMsTUFBTSxXQUFXLENBQUM7QUFBQSxZQUNuQyxVQUFVLENBQUMsTUFBTSxPQUFPLEVBQUUsSUFBSTtBQUFBLFlBQzlCLFVBQVU7QUFBQSxZQUNWLFdBQVM7QUFBQSxZQUNULEtBQUs7QUFBQSxZQUNMLFlBQVksQ0FBQyxHQUFHLEVBQUUsVUFBVSxTQUFTLEVBQUUsTUFDckMsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLElBQUksV0FBWSxJQUFJLE9BQU8sSUFBSSxZQUFhLE1BQU0sVUFBVSxFQUFFLEdBQ2hHO0FBQUEsOEJBQUFELEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxHQUFHLFFBQVEsRUFBRSxHQUNuQywwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxXQUFXLFVBQVUsR0FBRyxHQUFJLFlBQUUsS0FBSyxRQUFRLE9BQU8sR0FBRyxHQUFFLEdBQ3JHO0FBQUEsY0FDQSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFdBQVcsVUFBVSxPQUFPLEtBQUssQ0FBQyxTQUFTLEdBQUksZUFBSyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUc7QUFBQSxlQUM1RjtBQUFBO0FBQUEsUUFFSixHQUNGO0FBQUEsUUFDQSxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLElBQUksVUFBVSxVQUFVLEVBQUUsR0FDM0Usc0JBQVksUUFBUSxJQUNuQixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLEdBQUcsR0FBSSxrQkFBUSxFQUFFLEtBQUssTUFBTSxHQUFHLEdBQUksR0FBRSxJQUUzRCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyxpQ0FBbUIsR0FFdEQ7QUFBQSxTQUNGO0FBQUE7QUFBQSxFQUNGO0FBRUo7QUFFTyxTQUFTLGdCQUFnQixFQUFFLFNBQVMsT0FBTyxTQUFTLFFBQVEsUUFBUSxHQUFHO0FBQzVFLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUcsY0FBYSxRQUFRLENBQUMsS0FBSyxJQUFJO0FBRTdELFNBQ0UsZ0JBQUFILEtBQUMsY0FBVyxPQUFNLHVCQUFzQixNQUFLLG1GQUMzQywwQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE9BQU8sUUFBUSxJQUFJLFdBQVcsR0FBRyxLQUFLLEVBQUUsR0FDbkU7QUFBQSxvQkFBQUQsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsT0FBTyxNQUFNLEdBQ2xELDBCQUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsU0FBTztBQUFBLFFBQ1AsT0FBTztBQUFBLFFBQ1A7QUFBQSxRQUNBLGFBQVk7QUFBQSxRQUNaLFFBQVEsQ0FBQyxHQUFHLE1BQU0sV0FBVyxHQUFHLEVBQUUsSUFBSSxLQUFLO0FBQUEsUUFDM0MsZ0JBQWdCLENBQUMsTUFBTSxXQUFXLENBQUM7QUFBQSxRQUNuQyxVQUFVO0FBQUEsUUFDVixVQUFVO0FBQUEsUUFDVixXQUFTO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxZQUFZLENBQUMsR0FBRyxFQUFFLFVBQVUsU0FBUyxFQUFFLE1BQ3JDLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsT0FBTyxJQUFJLFdBQVksSUFBSSxPQUFPLElBQUksWUFBYSxNQUFNLFVBQVUsRUFBRSxHQUNoRztBQUFBLDBCQUFBRCxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxRQUFRLEVBQUUsR0FDbkMsMEJBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsVUFBVSxZQUFZLE9BQU8sV0FBVyxVQUFVLEdBQUcsR0FBSSxZQUFFLEtBQUssUUFBUSxPQUFPLEdBQUcsR0FBRSxHQUNyRztBQUFBLFVBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxXQUFXLFVBQVUsT0FBTyxLQUFLLENBQUMsU0FBUyxHQUFJLGVBQUssTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLFVBQVM7QUFBQSxXQUN4RztBQUFBO0FBQUEsSUFFSixHQUNGO0FBQUEsSUFDQSxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLElBQUksVUFBVSxVQUFVLEVBQUUsR0FDM0Usa0JBQVEsSUFDUCxnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFNBQVMsR0FDcEM7QUFBQSxzQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLEdBQUcsR0FBSSxrQkFBUSxFQUFFLEtBQUssTUFBTSxHQUFHLEdBQUksR0FBRTtBQUFBLE1BQzNELGdCQUFBQSxLQUFDLFVBQUssZUFBQztBQUFBLE1BQ1AsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksa0NBQXdCLE1BQU0sUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLFlBQVc7QUFBQSxNQUM3RixNQUFNLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRyxNQUNwQyxnQkFBQUEsS0FBQyxVQUFhLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxzQkFBTyxFQUFFLEtBQUssTUFBM0MsQ0FBOEMsQ0FDMUQ7QUFBQSxPQUNILElBRUEsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUcsa0NBQW9CLEdBRXZEO0FBQUEsS0FDRixHQUNGO0FBRUo7QUFFTyxTQUFTLGtCQUFrQixFQUFFLFFBQVEsU0FBUyxTQUFTLFVBQVUsT0FBTyxHQUFHO0FBQ2hGLFNBQ0UsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFVBQVUsR0FBRyxXQUFXLEVBQUUsR0FDL0Q7QUFBQSxvQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sR0FBRyxNQUFNLEtBQUssR0FBRyw0QkFBYztBQUFBLElBQzVELGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLHNCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGtCQUFPO0FBQUEsTUFDdkMsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxHQUFHLFFBQVEsRUFBRSxHQUNuQywwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxRQUFRLEdBQUksaUJBQU8sS0FBSyxRQUFRLE9BQU8sR0FBRyxHQUFFLEdBQzFGO0FBQUEsT0FDRjtBQUFBLElBQ0EsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFdBQVcsRUFBRSxHQUNsRCwwQkFBQUE7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLFNBQU87QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQO0FBQUEsUUFDQSxZQUFZO0FBQUEsUUFDWixZQUFZO0FBQUEsUUFDWixLQUFLO0FBQUEsUUFDTCxTQUFPO0FBQUEsUUFDUDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLE1BQ3ZCLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsU0FBUyxHQUNwQztBQUFBLDBCQUFBQSxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLDRCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxFQUFFLEdBQUksbUJBQVMsWUFBTyxNQUFLO0FBQUEsWUFDeEQsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxTQUFTLE9BQU8sSUFBSSxHQUFHLEdBQUksWUFBRSxPQUFNO0FBQUEsYUFDM0Q7QUFBQSxVQUNBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGVBQUssRUFBRSxJQUFJLElBQUc7QUFBQSxXQUNoRDtBQUFBO0FBQUEsSUFFSixHQUNGO0FBQUEsSUFDQSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyxtRUFBa0Q7QUFBQSxLQUNuRjtBQUVKO0FBRUEsU0FBUyxVQUFVLFNBQVMsU0FBUztBQUNuQyxFQUFBSSxVQUFTLENBQUMsVUFBVTtBQUNsQixRQUFJLENBQUMsUUFBUSxFQUFHO0FBQ2hCLFFBQUksTUFBTSxRQUFRLFVBQVU7QUFDMUIsY0FBUTtBQUNSLFlBQU0sZ0JBQWdCO0FBQUEsSUFDeEI7QUFBQSxFQUNGLENBQUM7QUFDSDtBQUVPLFNBQVMsWUFBWSxFQUFFLFVBQVUsUUFBUSxZQUFZLFNBQVMsU0FBUyxRQUFRLFVBQVUsUUFBUSxHQUFHO0FBQ3pHLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUQsY0FBYSxTQUFTLENBQUMsS0FBSyxJQUFJO0FBQzlELFlBQVUsTUFBTSxTQUFTLE9BQU87QUFDaEMsRUFBQUMsVUFBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxDQUFDLFFBQVM7QUFDZCxRQUFJLE1BQU0sUUFBUSxNQUFNLFFBQVEsT0FBTyxRQUFRLEdBQUc7QUFDaEQsZUFBUyxRQUFRLENBQUM7QUFDbEIsWUFBTSxnQkFBZ0I7QUFBQSxJQUN4QjtBQUFBLEVBQ0YsQ0FBQztBQUVELFNBQ0UsZ0JBQUFKO0FBQUEsSUFBQztBQUFBO0FBQUEsTUFDQyxPQUFNO0FBQUEsTUFDTixNQUFLO0FBQUEsTUFDTCxPQUFPLGdCQUFBQSxLQUFDLGFBQVUsUUFBZ0IsUUFBUSxZQUFZO0FBQUEsTUFFdEQsMEJBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLFFBQVEsSUFBSSxXQUFXLEdBQUcsS0FBSyxFQUFFLEdBQ25FO0FBQUEsd0JBQUFELEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLE9BQU8sTUFBTSxHQUNqRCxvQkFDQyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyxpQ0FBbUIsSUFDaEQsU0FBUyxXQUFXLElBQ3RCLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLGtDQUFvQixJQUVuRCxnQkFBQUE7QUFBQSxVQUFDO0FBQUE7QUFBQSxZQUNDLFNBQU87QUFBQSxZQUNQLE9BQU87QUFBQSxZQUNQLFNBQVMsV0FBVyxDQUFDO0FBQUEsWUFDckIsYUFBWTtBQUFBLFlBQ1osUUFBUSxDQUFDLEdBQUcsTUFBTSxXQUFXLEdBQUcsRUFBRSxLQUFLLEtBQUs7QUFBQSxZQUM1QyxnQkFBZ0IsQ0FBQyxNQUFNLFdBQVcsQ0FBQztBQUFBLFlBQ25DLFVBQVU7QUFBQSxZQUNWLFVBQVU7QUFBQSxZQUNWLFdBQVM7QUFBQSxZQUNULEtBQUs7QUFBQSxZQUNMLFlBQVksQ0FBQyxHQUFHLEVBQUUsVUFBVSxTQUFTLEVBQUUsTUFDckMsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLElBQUksV0FBWSxJQUFJLE9BQU8sSUFBSSxZQUFhLE1BQU0sVUFBVSxFQUFFLEdBQy9GO0FBQUEsZ0JBQUUsU0FBUyxnQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFdBQVcsVUFBVSxFQUFFLE1BQU0sR0FBSSxxQkFBSztBQUFBLGNBQ3hFLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxRQUFRLEVBQUUsR0FDbkMsMEJBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsVUFBVSxZQUFZLE9BQU8sV0FBVyxVQUFVLEdBQUcsR0FBSSxZQUFFLE1BQU0sUUFBUSxPQUFPLEdBQUcsR0FBRSxHQUN0RztBQUFBLGNBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxXQUFXLFVBQVUsT0FBTyxLQUFLLENBQUMsU0FBUyxHQUFJLGVBQUssUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFHO0FBQUEsZUFDNUY7QUFBQTtBQUFBLFFBRUosR0FFSjtBQUFBLFFBQ0EsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFVBQVUsR0FBRyxJQUFJLFVBQVUsVUFBVSxFQUFFLEdBQzNFLGtCQUFRLElBQ1AsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxTQUFTLEdBQ3BDO0FBQUEsMEJBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxHQUFHLEdBQUksa0JBQVEsRUFBRSxNQUFNLE1BQU0sR0FBRyxHQUFHLEdBQUU7QUFBQSxVQUMzRCxnQkFBQUEsS0FBQyxVQUFLLGVBQUM7QUFBQSxVQUNQLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGFBQUcsUUFBUSxFQUFFLEtBQUssSUFBSSxRQUFRLEVBQUUsVUFBVSxJQUFJLFNBQVMsT0FBTyxTQUFNLFFBQVEsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFHO0FBQUEsVUFDNUgsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLFVBQVUsV0FBVyxHQUFJLGtCQUFRLEVBQUUsT0FBTyxNQUFLO0FBQUEsV0FDOUUsSUFFQSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyx5QkFBVyxHQUU5QztBQUFBLFNBQ0Y7QUFBQTtBQUFBLEVBQ0Y7QUFFSjtBQUVPLFNBQVMsWUFBWSxFQUFFLFFBQVEsU0FBUyxjQUFjLFNBQVMsUUFBUSxlQUFlLFFBQVEsR0FBRztBQUN0RyxRQUFNLENBQUMsUUFBUSxTQUFTLElBQUlHLGNBQWEsQ0FBQztBQUMxQyxRQUFNLFFBQVE7QUFFZCxFQUFBQyxVQUFTLENBQUMsVUFBVTtBQUNsQixRQUFJLENBQUMsUUFBUztBQUNkLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxLQUFLO0FBQ25DLG9CQUFjLE1BQU0sT0FBTyxDQUFDLENBQUM7QUFDN0IsWUFBTSxnQkFBZ0I7QUFBQSxJQUN4QjtBQUFBLEVBQ0YsQ0FBQztBQUVELFFBQU0sUUFBUSxDQUFDLE1BQU8sRUFBRSxRQUFRLE9BQU8sWUFBWSxFQUFFO0FBRXJELFNBQ0UsZ0JBQUFKLEtBQUMsY0FBVyxPQUFNLG1CQUFrQixNQUFLLG9GQUN2QywwQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsV0FBVyxFQUFFLEdBQ2xELDBCQUFBQTtBQUFBLElBQUM7QUFBQTtBQUFBLE1BQ0MsU0FBTztBQUFBLE1BQ1A7QUFBQSxNQUNBLFVBQVUsT0FBTztBQUFBLE1BQ2pCLFVBQVU7QUFBQSxNQUNWO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixTQUFPO0FBQUEsTUFDUCxVQUFVO0FBQUEsTUFDVixVQUFVO0FBQUEsTUFDVixZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sTUFDdkIsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsd0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEVBQUUsR0FBSSxtQkFBUyxZQUFPLE1BQUs7QUFBQSxRQUN4RCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsT0FBTyxJQUFJLEdBQUcsR0FBSSxnQkFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUU7QUFBQSxRQUNyRSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxZQUFFLE1BQUs7QUFBQSxRQUN0QyxFQUFFLFFBQVEsV0FBVyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsT0FBTyxJQUFJLE1BQU0sR0FBSSxzQkFBTTtBQUFBLFFBQy9FLEVBQUUsUUFBUSxnQkFBZ0IsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksNEJBQWM7QUFBQSxTQUMzRTtBQUFBO0FBQUEsRUFFSixHQUNGLEdBQ0Y7QUFFSjtBQUVPLFNBQVMsY0FBYyxFQUFFLE9BQU8sTUFBTSxTQUFTLFFBQVEsR0FBRztBQUMvRCxZQUFVLE1BQU0sU0FBUyxPQUFPO0FBRWhDLFNBQ0UsZ0JBQUFBLEtBQUMsY0FBVyxPQUFjLE1BQUssZ0RBQzdCLDBCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxRQUFRLElBQUksV0FBVyxFQUFFLEdBQzdELGVBQUssV0FBVyxJQUNmLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLDhCQUFnQixJQUUvQyxnQkFBQUEsS0FBQ0ssWUFBQSxFQUFVLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxTQUFrQixXQUFTLE1BQzNELGVBQUssSUFBSSxDQUFDLEtBQUssTUFDZCxnQkFBQUosTUFBQyxTQUE2QixPQUFPLEVBQUUsZUFBZSxVQUFVLFdBQVcsTUFBTSxJQUFJLElBQUksRUFBRSxHQUN6RjtBQUFBLG9CQUFBQSxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLHNCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxFQUFFLEdBQUksY0FBSSxNQUFLO0FBQUEsTUFDNUMsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxNQUM1QixJQUFJLFFBQVEsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksY0FBSSxNQUFLO0FBQUEsT0FDeEQ7QUFBQSxJQUNBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGNBQUksUUFBUSxrQkFBaUI7QUFBQSxPQU5yRCxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsRUFPMUIsQ0FDRCxHQUNILEdBRUosR0FDRjtBQUVKO0FBRU8sU0FBUyxhQUFhLEVBQUUsVUFBVSxTQUFTLFNBQVMsUUFBUSxRQUFRLEdBQUc7QUFDNUUsUUFBTSxDQUFDLFNBQVMsVUFBVSxJQUFJRyxjQUFhLFNBQVMsQ0FBQyxLQUFLLElBQUk7QUFDOUQsWUFBVSxNQUFNLFNBQVMsT0FBTztBQUVoQyxTQUNFLGdCQUFBSCxLQUFDLGNBQVcsT0FBTSxrQkFBaUIsTUFBSyxxR0FDdEMsMEJBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLFFBQVEsSUFBSSxXQUFXLEdBQUcsS0FBSyxFQUFFLEdBQ25FO0FBQUEsb0JBQUFELEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLE9BQU8sTUFBTSxHQUNqRCxvQkFDQyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyxpQ0FBbUIsSUFDaEQsU0FBUyxXQUFXLElBQ3RCLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLG1DQUFxQixJQUVwRCxnQkFBQUE7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLFNBQU87QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQLFNBQVMsV0FBVyxDQUFDO0FBQUEsUUFDckIsYUFBWTtBQUFBLFFBQ1osUUFBUSxDQUFDLEdBQUcsTUFBTSxXQUFXLEdBQUcsRUFBRSxJQUFJLEtBQUs7QUFBQSxRQUMzQyxnQkFBZ0IsQ0FBQyxNQUFNLFdBQVcsQ0FBQztBQUFBLFFBQ25DLFVBQVU7QUFBQSxRQUNWLFVBQVU7QUFBQSxRQUNWLFdBQVM7QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLFlBQVksQ0FBQyxHQUFHLEVBQUUsVUFBVSxTQUFTLEVBQUUsTUFDckMsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLElBQUksV0FBWSxJQUFJLE9BQU8sSUFBSSxZQUFhLE1BQU0sVUFBVSxFQUFFLEdBQy9GO0FBQUEsWUFBRSxPQUFPLFNBQVMsZ0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxXQUFXLFVBQVUsRUFBRSxPQUFPLE1BQU0sR0FBSSxxQkFBSztBQUFBLFVBQ3RGLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxRQUFRLEVBQUUsR0FDbkMsMEJBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsVUFBVSxZQUFZLE9BQU8sV0FBVyxVQUFVLEdBQUcsR0FBSSxZQUFFLE1BQUssR0FDakY7QUFBQSxVQUNBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sV0FBVyxVQUFVLE9BQU8sS0FBSyxDQUFDLFNBQVMsR0FBSSxlQUFLLEVBQUUsVUFBVSxrQkFBZSxFQUFFLEdBQUcsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUc7QUFBQSxXQUNuSTtBQUFBO0FBQUEsSUFFSixHQUVKO0FBQUEsSUFDQSxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLElBQUksVUFBVSxVQUFVLEVBQUUsR0FDM0Usa0JBQVEsSUFDUCxnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFNBQVMsR0FDcEM7QUFBQSxzQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLElBQUksVUFBVSxXQUFXLEdBQUksa0JBQVEsRUFBRSxNQUFLO0FBQUEsTUFDbEUsZ0JBQUFBLEtBQUMsVUFBSyxlQUFDO0FBQUEsTUFDUCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsVUFBVSxXQUFXLEdBQUksbUJBQVMsUUFBUSxFQUFFLE9BQU8sTUFBTSxRQUFRLE9BQU8sR0FBRyxDQUFDLElBQUc7QUFBQSxNQUM5RyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxhQUFHLFFBQVEsRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLFVBQVUsSUFBSSxZQUFZLFVBQVUsU0FBTSxRQUFRLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFHO0FBQUEsT0FDM0ksSUFFQSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyx5QkFBVyxHQUU5QztBQUFBLEtBQ0YsR0FDRjtBQUVKO0FBRU8sU0FBUyxZQUFZLEVBQUUsU0FBQU0sVUFBUyxRQUFBQyxTQUFRLFlBQVksU0FBUyxRQUFRLFdBQVcsUUFBUSxHQUFHO0FBQ2hHLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUosY0FBYSxJQUFJO0FBQy9DLFFBQU0sQ0FBQyxPQUFPLFFBQVEsSUFBSUEsY0FBYSxDQUFDO0FBQ3hDLFlBQVUsTUFBTSxTQUFTLE1BQU8sUUFBUSxJQUFJLFdBQVcsSUFBSSxJQUFJLFFBQVEsQ0FBRTtBQUN6RSxPQUFLRztBQUVMLFFBQU0sV0FBVyxNQUFNQyxRQUFPLEtBQUssSUFBSSxNQUFNLEdBQUdBLFFBQU8sU0FBUyxDQUFDLENBQUMsS0FBSztBQUV2RSxFQUFBSCxVQUFTLENBQUMsVUFBVTtBQUNsQixRQUFJLENBQUMsV0FBVyxRQUFRLEVBQUc7QUFDM0IsVUFBTSxJQUFJLFNBQVM7QUFDbkIsUUFBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUMsTUFBTSxNQUFNO0FBQ3pDLGFBQU8sQ0FBQztBQUNSLFlBQU0sZ0JBQWdCO0FBQUEsSUFDeEIsV0FBVyxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUMsTUFBTSxNQUFNO0FBQ2hELGdCQUFVLENBQUM7QUFDWCxZQUFNLGdCQUFnQjtBQUFBLElBQ3hCO0FBQUEsRUFDRixDQUFDO0FBRUQsUUFBTSxTQUFTLENBQUMsTUFBTTtBQUNwQixVQUFNLE9BQU8sS0FBSyxRQUFRLEVBQUUsV0FBVyxLQUFLLElBQUksS0FBSyxFQUFFLGFBQWEsR0FBSTtBQUN4RSxXQUFPLE9BQU8sS0FBSyxHQUFHLElBQUksTUFBTSxHQUFHLEtBQUssTUFBTSxPQUFPLEVBQUUsQ0FBQyxJQUFJLE9BQU8sRUFBRTtBQUFBLEVBQ3ZFO0FBRUEsTUFBSSxRQUFRLEdBQUc7QUFDYixVQUFNLE1BQU0sV0FBVyxRQUFRLENBQUM7QUFDaEMsUUFBSSxDQUFDLEtBQUs7QUFDUixpQkFBVyxJQUFJO0FBQUEsSUFDakIsT0FBTztBQUNMLFlBQU0sUUFBUSxJQUFJLFNBQVMsSUFBSSxPQUFPLE1BQU0sSUFBSSxJQUFJLENBQUM7QUFDckQsYUFDRSxnQkFBQUo7QUFBQSxRQUFDO0FBQUE7QUFBQSxVQUNDLE9BQU8sU0FBUyxJQUFJLEVBQUUsU0FBTSxJQUFJLFFBQVEsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUFBLFVBQ3BELE1BQU0sR0FBRyxJQUFJLFdBQVcsWUFBWSxZQUFZLG9CQUFpQixJQUFJLFFBQVEsRUFBRSxTQUFNLElBQUksVUFBVTtBQUFBLFVBRW5HLDBCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxRQUFRLElBQUksV0FBVyxHQUFHLElBQUksVUFBVSxVQUFVLEVBQUUsR0FDeEYsZ0JBQU0sV0FBVyxJQUNoQixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRywyQkFBYSxJQUU1QyxnQkFBQUEsS0FBQ0ssWUFBQSxFQUFVLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxTQUFrQixjQUFjLEtBQUssVUFBVSxNQUFNO0FBQUEsVUFBQyxHQUFHLFdBQVMsTUFDbEcsZ0JBQU0sSUFBSSxDQUFDLE1BQU0sTUFDaEIsZ0JBQUFMLEtBQUMsVUFBYSxPQUFPLEVBQUUsT0FBTyxRQUFRLEdBQUksa0JBQVEsT0FBdkMsQ0FBMkMsQ0FDdkQsR0FDSCxHQUVKO0FBQUE7QUFBQSxNQUNGO0FBQUEsSUFFSjtBQUFBLEVBQ0Y7QUFFQSxTQUNFLGdCQUFBQSxLQUFDLGNBQVcsT0FBTSxVQUFTLE1BQUssK0RBQzlCLDBCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxXQUFXLEVBQUUsR0FDakQsVUFBQU8sUUFBTyxXQUFXLElBQ2pCLGdCQUFBUCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLHdGQUF1RSxJQUV0RyxnQkFBQUE7QUFBQSxJQUFDO0FBQUE7QUFBQSxNQUNDLFNBQU87QUFBQSxNQUNQLE9BQU9PO0FBQUEsTUFDUCxVQUFVLE1BQU07QUFBQSxNQUNoQixVQUFVO0FBQUEsTUFDVjtBQUFBLE1BQ0EsWUFBWTtBQUFBLE1BQ1osU0FBUztBQUFBLE1BQ1QsVUFBVSxDQUFDLE1BQU0sV0FBVyxFQUFFLEVBQUU7QUFBQSxNQUNoQyxVQUFVO0FBQUEsTUFDVixZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sTUFDdkIsZ0JBQUFOLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsd0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEVBQUUsR0FBSSxtQkFBUyxZQUFPLE1BQUs7QUFBQSxRQUN4RCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxZQUFZLE9BQU8sSUFBSSxFQUFFLGFBQWEsSUFBSSxRQUFRLElBQUksR0FDdEYsWUFBRSxXQUFXLFlBQVksV0FBTSxFQUFFLGFBQWEsSUFBSSxXQUFNLFVBQzNEO0FBQUEsUUFDQSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsT0FBTyxJQUFJLEdBQUcsR0FBSSxjQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFHO0FBQUEsUUFDdEUsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxHQUFHLFFBQVEsRUFBRSxHQUNuQywwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxTQUFTLEtBQUssUUFBUSxHQUFJLFlBQUUsU0FBUSxHQUNsRjtBQUFBLFFBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksZUFBSyxFQUFFLFdBQVcsWUFBWSxNQUFNLE9BQU8sQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLFFBQVEsU0FBTSxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUc7QUFBQSxTQUMxSDtBQUFBO0FBQUEsRUFFSixHQUVKLEdBQ0Y7QUFFSjtBQUVPLFNBQVMsYUFBYSxFQUFFLFdBQUFRLFlBQVcsU0FBUyxXQUFXLGNBQWMsUUFBUSxHQUFHO0FBQ3JGLFFBQU0sQ0FBQyxPQUFPLFFBQVEsSUFBSUwsY0FBYSxDQUFDO0FBQ3hDLFlBQVUsTUFBTSxTQUFTLE9BQU87QUFFaEMsUUFBTSxXQUFXLE1BQU1LLFdBQVUsS0FBSyxJQUFJLE1BQU0sR0FBR0EsV0FBVSxTQUFTLENBQUMsQ0FBQyxLQUFLO0FBRTdFLEVBQUFKLFVBQVMsQ0FBQyxVQUFVO0FBQ2xCLFFBQUksQ0FBQyxRQUFTO0FBQ2QsVUFBTSxJQUFJLFNBQVM7QUFDbkIsUUFBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUMsTUFBTSxRQUFRLEVBQUUsV0FBVztBQUN4RCxtQkFBYSxDQUFDO0FBQ2QsWUFBTSxnQkFBZ0I7QUFBQSxJQUN4QjtBQUFBLEVBQ0YsQ0FBQztBQUVELFNBQ0UsZ0JBQUFKLEtBQUMsY0FBVyxPQUFNLDBCQUF5QixNQUFLLGtEQUM5QywwQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsV0FBVyxFQUFFLEdBQ2xELDBCQUFBQTtBQUFBLElBQUM7QUFBQTtBQUFBLE1BQ0MsU0FBTztBQUFBLE1BQ1AsT0FBT1E7QUFBQSxNQUNQLFVBQVUsTUFBTTtBQUFBLE1BQ2hCLFVBQVU7QUFBQSxNQUNWO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixTQUFPO0FBQUEsTUFDUCxVQUFVLENBQUMsTUFBTSxVQUFVLENBQUM7QUFBQSxNQUM1QixVQUFVO0FBQUEsTUFDVixZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sTUFDdkIsZ0JBQUFQLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsd0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEVBQUUsR0FBSSxtQkFBUyxZQUFPLE1BQUs7QUFBQSxRQUN4RCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxPQUFPLElBQUksTUFBTSxHQUFJLFlBQUUsWUFBWSxXQUFNLFVBQUk7QUFBQSxRQUNqRixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsT0FBTyxJQUFJLEdBQUcsR0FBSSxjQUFJLEVBQUUsS0FBSyxNQUFLO0FBQUEsUUFDakUsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxHQUFHLFFBQVEsRUFBRSxHQUNuQywwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxNQUFNLEdBQy9DLFlBQUUsWUFBWSxZQUFZLEVBQUUsUUFBUSxPQUFPLEVBQUUsS0FBSyxLQUFLLEVBQUUsS0FBSyxpQkFDakUsR0FDRjtBQUFBLFNBQ0Y7QUFBQTtBQUFBLEVBRUosR0FDRixHQUNGO0FBRUo7QUFFTyxTQUFTLGFBQWEsRUFBRSxTQUFBUyxVQUFTLFNBQVMsVUFBVSxRQUFRLEdBQUc7QUFDcEUsUUFBTSxDQUFDLE9BQU8sUUFBUSxJQUFJTixjQUFhLENBQUM7QUFDeEMsUUFBTSxDQUFDLE1BQU0sT0FBTyxJQUFJQSxjQUFhLENBQUM7QUFDdEMsWUFBVSxNQUFNLFNBQVMsT0FBTztBQUNoQyxjQUFZLE1BQU0sUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsR0FBSTtBQUM3QyxPQUFLLEtBQUs7QUFFVixRQUFNLFdBQVcsTUFBTU0sU0FBUSxLQUFLLElBQUksTUFBTSxHQUFHQSxTQUFRLFNBQVMsQ0FBQyxDQUFDLEtBQUs7QUFFekUsRUFBQUwsVUFBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxDQUFDLFFBQVM7QUFDZCxVQUFNLElBQUksU0FBUztBQUNuQixRQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQyxNQUFNLE1BQU07QUFDekMsZUFBUyxDQUFDO0FBQ1YsWUFBTSxnQkFBZ0I7QUFBQSxJQUN4QjtBQUFBLEVBQ0YsQ0FBQztBQUVELFFBQU0sWUFBWSxDQUFDLE9BQU87QUFDeEIsVUFBTSxPQUFPLEtBQUssSUFBSSxHQUFHLEtBQUssT0FBTyxLQUFLLEtBQUssSUFBSSxLQUFLLEdBQUksQ0FBQztBQUM3RCxRQUFJLE9BQU8sR0FBSSxRQUFPLE1BQU0sSUFBSTtBQUNoQyxVQUFNLE9BQU8sS0FBSyxNQUFNLE9BQU8sRUFBRTtBQUNqQyxRQUFJLE9BQU8sR0FBSSxRQUFPLE1BQU0sSUFBSSxLQUFLLE9BQU8sRUFBRTtBQUM5QyxXQUFPLE1BQU0sS0FBSyxNQUFNLE9BQU8sRUFBRSxDQUFDLEtBQUssT0FBTyxFQUFFO0FBQUEsRUFDbEQ7QUFFQSxTQUNFLGdCQUFBSixLQUFDLGNBQVcsT0FBTSxzQkFBcUIsTUFBSyxvQ0FDMUMsMEJBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFdBQVcsRUFBRSxHQUNqRCxVQUFBUyxTQUFRLFdBQVcsSUFDbEIsZ0JBQUFULEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUcsb0ZBQW1FLElBRWxHLGdCQUFBQTtBQUFBLElBQUM7QUFBQTtBQUFBLE1BQ0MsU0FBTztBQUFBLE1BQ1AsT0FBT1M7QUFBQSxNQUNQLFVBQVUsTUFBTTtBQUFBLE1BQ2hCLFVBQVU7QUFBQSxNQUNWO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixZQUFZO0FBQUEsTUFDWixLQUFLO0FBQUEsTUFDTCxVQUFVLENBQUMsTUFBTSxTQUFTLENBQUM7QUFBQSxNQUMzQixVQUFVO0FBQUEsTUFDVixZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sTUFDdkIsZ0JBQUFSLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxTQUFTLEdBQ3BDO0FBQUEsd0JBQUFBLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsMEJBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEVBQUUsR0FBSSxtQkFBUyxZQUFPLE1BQUs7QUFBQSxVQUN4RCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsT0FBTyxJQUFJLEdBQUcsR0FBSSxvQkFBSyxFQUFFLEVBQUUsSUFBRztBQUFBLFVBQzdELGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHO0FBQUEsVUFDN0IsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksb0JBQVUsRUFBRSxFQUFFLEdBQUU7QUFBQSxVQUNoRCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxlQUFLLElBQUksS0FBSyxFQUFFLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxJQUFHO0FBQUEsV0FDN0U7QUFBQSxRQUNBLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxRQUFRLEdBQUcsZUFBZSxNQUFNLEdBQ3pEO0FBQUEsMEJBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksa0JBQU87QUFBQSxVQUN2QyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxRQUFRLEdBQUksWUFBRSxLQUFLLFFBQVEsT0FBTyxHQUFHLEdBQUU7QUFBQSxXQUNyRjtBQUFBLFNBQ0Y7QUFBQTtBQUFBLEVBRUosR0FFSixHQUNGO0FBRUo7QUFFQSxJQUFNLGFBQWE7QUFBQSxFQUNqQixXQUFXLEVBQUUsTUFBTSxVQUFLLE9BQU8sT0FBTyxFQUFFO0FBQUEsRUFDeEMsWUFBWSxFQUFFLE1BQU0sVUFBSyxPQUFPLFVBQVU7QUFBQSxFQUMxQyxPQUFPLEVBQUUsTUFBTSxVQUFLLE9BQU8sSUFBSTtBQUFBLEVBQy9CLFVBQVUsRUFBRSxNQUFNLFVBQUssT0FBTyxNQUFNO0FBQUEsRUFDcEMsTUFBTSxFQUFFLE1BQU0sVUFBSyxPQUFPLE1BQU07QUFDbEM7QUFFQSxTQUFTLFVBQVUsRUFBRSxPQUFPLFFBQVEsU0FBUyxHQUFHO0FBQzlDLFNBQ0UsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxTQUFTLEdBQ3BDO0FBQUEsb0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxTQUFTLE9BQU8sSUFBSSxNQUFNLEdBQUksaUJBQU07QUFBQSxJQUN6RDtBQUFBLElBQ0QsZ0JBQUFBLEtBQUMsVUFBSyxlQUFDO0FBQUEsS0FDVDtBQUVKO0FBRUEsU0FBUyxXQUFXLEVBQUUsU0FBUyxPQUFPLFdBQVcsU0FBUyxHQUFHO0FBQzNELFFBQU0sQ0FBQyxNQUFNLE9BQU8sSUFBSUcsY0FBYSxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQ08sUUFBTyxRQUFRLElBQUlQLGNBQWEsUUFBUTtBQUMvQyxRQUFNLENBQUMsV0FBVyxZQUFZLElBQUlBLGNBQWEsT0FBTztBQUN0RCxRQUFNLENBQUMsUUFBUSxTQUFTLElBQUlBLGNBQWEsRUFBRTtBQUMzQyxRQUFNLENBQUMsU0FBUyxVQUFVLElBQUlBLGNBQWEsRUFBRTtBQUU3QyxRQUFNLEtBQUssU0FBUyxFQUFFLFNBQVMsT0FBTyxDQUFDO0FBQ3ZDLEtBQUcsS0FBSyxNQUFNO0FBQ2QsS0FBRyxLQUFLLE9BQU87QUFDZixLQUFHLEtBQUssV0FBVztBQUNuQixLQUFHLEtBQUssUUFBUTtBQUNoQixNQUFJLFVBQVUsTUFBTSxPQUFRLElBQUcsS0FBSyxTQUFTO0FBQzdDLEtBQUcsS0FBSyxLQUFLO0FBQ2IsS0FBRyxLQUFLLFFBQVE7QUFFaEIsRUFBQUMsVUFBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxDQUFDLFFBQVM7QUFDZCxRQUFJLE1BQU0sUUFBUSxVQUFVO0FBQzFCLGVBQVM7QUFDVCxZQUFNLGdCQUFnQjtBQUFBLElBQ3hCO0FBQUEsRUFDRixDQUFDO0FBRUQsUUFBTSxPQUFPLFVBQVUsTUFBTTtBQUU3QixRQUFNLFNBQVMsTUFBTTtBQUNuQixVQUFNLGFBQWEsS0FBSyxFQUFFLEtBQUs7QUFDL0IsVUFBTSxRQUFRLE9BQU8sRUFBRSxLQUFLO0FBQzVCLFFBQUksQ0FBQyxjQUFjLEtBQUssS0FBSyxVQUFVLEVBQUcsUUFBTyxVQUFVLDRDQUE0QztBQUN2RyxRQUFJLENBQUMsTUFBTyxRQUFPLFVBQVUsT0FBTyxvQkFBb0IscUJBQXFCO0FBQzdFLFFBQUksUUFBUSxDQUFDLGVBQWUsS0FBSyxLQUFLLEVBQUcsUUFBTyxVQUFVLHlDQUF5QztBQUNuRyxRQUFJLENBQUMsUUFBUSxlQUFlLEtBQUssS0FBSyxFQUFHLFFBQU8sVUFBVSxrRUFBa0U7QUFDNUgsVUFBTSxRQUFRLFFBQVEsRUFBRSxLQUFLO0FBQzdCLFVBQU0sWUFBWSxRQUFRLFFBQVEsR0FBRyxLQUFLLElBQUksS0FBSyxLQUFLLE9BQU9NLE9BQU0sQ0FBQztBQUFBLEVBQ3hFO0FBRUEsU0FDRSxnQkFBQVQsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsV0FBVyxFQUFFLEdBQ2xEO0FBQUEsb0JBQUFELEtBQUMsYUFBVSxPQUFNLFFBQU8sUUFBUSxHQUFHLEdBQUcsTUFBTSxHQUMxQywwQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxJQUFJLFVBQVUsVUFBVSxFQUFFLEdBQ3RDLDBCQUFBQSxLQUFDLGFBQVUsU0FBUyxXQUFXLEdBQUcsR0FBRyxNQUFNLEdBQUcsYUFBWSxVQUFTLFVBQVUsU0FBUyxHQUN4RixHQUNGO0FBQUEsSUFDQSxnQkFBQUEsS0FBQyxhQUFVLE9BQU0sU0FBUSxRQUFRLEdBQUcsR0FBRyxPQUFPLEdBQzVDLDBCQUFBQSxLQUFDLFNBQU0sU0FBUyxDQUFDLFVBQVUsU0FBUyxHQUFHLFVBQVVVLE9BQU0sR0FBRyxVQUFVLFVBQVUsU0FBUyxXQUFXLEdBQUcsR0FBRyxPQUFPLEdBQUcsR0FDcEg7QUFBQSxJQUNBLGdCQUFBVixLQUFDLGFBQVUsT0FBTSxhQUFZLFFBQVEsR0FBRyxHQUFHLFdBQVcsR0FDcEQsMEJBQUFBLEtBQUMsU0FBTSxTQUFTLENBQUMsU0FBUyxNQUFNLEdBQUcsVUFBVSxVQUFVLEdBQUcsVUFBVSxjQUFjLFNBQVMsV0FBVyxHQUFHLEdBQUcsV0FBVyxHQUFHLEdBQzVIO0FBQUEsSUFDQSxnQkFBQUEsS0FBQyxhQUFVLE9BQU8sT0FBTyxRQUFRLFdBQVcsUUFBUSxHQUFHLEdBQUcsUUFBUSxHQUNoRSwwQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxJQUFJLFVBQVUsVUFBVSxFQUFFLEdBQ3RDLDBCQUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsU0FBUyxXQUFXLEdBQUcsR0FBRyxRQUFRO0FBQUEsUUFDbEMsYUFBYSxPQUFPLCtCQUErQjtBQUFBLFFBQ25ELFVBQVU7QUFBQTtBQUFBLElBQ1osR0FDRixHQUNGO0FBQUEsSUFDQyxRQUNDLGdCQUFBQSxLQUFDLGFBQVUsT0FBTSx5QkFBcUIsUUFBUSxHQUFHLEdBQUcsU0FBUyxHQUMzRCwwQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxJQUFJLFVBQVUsVUFBVSxFQUFFLEdBQ3RDLDBCQUFBQSxLQUFDLGFBQVUsU0FBUyxXQUFXLEdBQUcsR0FBRyxTQUFTLEdBQUcsYUFBWSw0Q0FBMkMsVUFBVSxZQUFZLEdBQ2hJLEdBQ0Y7QUFBQSxJQUVGLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLHNCQUFBRCxLQUFDLFVBQU8sT0FBTSxPQUFNLFNBQVMsUUFBUSxTQUFTLFdBQVcsR0FBRyxHQUFHLEtBQUssR0FBRztBQUFBLE1BQ3ZFLGdCQUFBQSxLQUFDLFVBQUssZ0JBQUU7QUFBQSxNQUNSLGdCQUFBQSxLQUFDLFVBQU8sT0FBTSxVQUFTLFNBQVMsVUFBVSxTQUFTLFdBQVcsR0FBRyxHQUFHLFFBQVEsR0FBRyxTQUFRLE9BQU07QUFBQSxPQUMvRjtBQUFBLEtBQ0Y7QUFFSjtBQUVPLFNBQVMsU0FBUyxFQUFFLFNBQVMsU0FBUyxVQUFVLGFBQWEsVUFBVSxPQUFPLFdBQVcsUUFBUSxHQUFHO0FBQ3pHLFFBQU0sQ0FBQyxRQUFRLFNBQVMsSUFBSUcsY0FBYSxLQUFLO0FBQzlDLFFBQU0sQ0FBQyxPQUFPLFFBQVEsSUFBSUEsY0FBYSxDQUFDO0FBQ3hDLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUEsY0FBYSxJQUFJO0FBQy9DLFlBQVUsTUFBTSxXQUFXLENBQUMsT0FBTyxHQUFHLE1BQU8sUUFBUSxJQUFJLFdBQVcsSUFBSSxJQUFJLFFBQVEsQ0FBRTtBQUV0RixRQUFNLFdBQVcsTUFBTSxRQUFRLEtBQUssSUFBSSxNQUFNLEdBQUcsUUFBUSxTQUFTLENBQUMsQ0FBQyxLQUFLO0FBQ3pFLFFBQU0sU0FBUyxNQUFNLFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLFFBQVEsQ0FBQyxLQUFLO0FBRWxFLE1BQUksUUFBUSxLQUFLLE9BQU8sR0FBRztBQUN6QixVQUFNLFNBQVMsT0FBTztBQUN0QixVQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxRQUFRLGtCQUFrQixFQUFFLEVBQUUsS0FBSyxLQUFLO0FBQzlFLFdBQ0UsZ0JBQUFIO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxPQUFPLG9CQUFpQixPQUFPLElBQUksU0FBTSxPQUFPLE1BQU0sTUFBTSxJQUFJLE9BQU8sTUFBTSxXQUFXLElBQUksU0FBUyxPQUFPO0FBQUEsUUFDNUcsTUFBSztBQUFBLFFBRUwsMEJBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFFBQVEsSUFBSSxXQUFXLEVBQUUsR0FDN0QsaUJBQU8sTUFBTSxXQUFXLElBQ3ZCLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLDZEQUE0QyxJQUUzRSxnQkFBQUEsS0FBQ0ssWUFBQSxFQUFVLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxTQUFrQixXQUFTLE1BQzNELGlCQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsTUFDcEIsZ0JBQUFKLE1BQUMsU0FBaUIsT0FBTyxFQUFFLGVBQWUsVUFBVSxXQUFXLE1BQU0sSUFBSSxJQUFJLEVBQUUsR0FDN0U7QUFBQSwwQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLFlBQUUsTUFBSztBQUFBLFVBQzFDLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLG1CQUFTLENBQUMsR0FBRTtBQUFBLGFBRnBDLEVBQUUsSUFHWixDQUNELEdBQ0gsR0FFSjtBQUFBO0FBQUEsSUFDRjtBQUFBLEVBRUo7QUFFQSxTQUNFLGdCQUFBQztBQUFBLElBQUM7QUFBQTtBQUFBLE1BQ0MsT0FBTTtBQUFBLE1BQ04sTUFBTSxPQUFPLElBQ1Qsb0ZBQ0E7QUFBQSxNQUVKO0FBQUEsd0JBQUFELEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFdBQVcsRUFBRSxHQUNqRCxpQkFBTyxJQUNOLGdCQUFBQTtBQUFBLFVBQUM7QUFBQTtBQUFBLFlBQ0M7QUFBQSxZQUNBLE9BQU8sQ0FBQyxNQUFNLE1BQU1VLFdBQVU7QUFDNUIsb0JBQU0sTUFBTSxNQUFNQSxNQUFLO0FBQ3ZCLHdCQUFVLEtBQUs7QUFBQSxZQUNqQjtBQUFBLFlBQ0E7QUFBQSxZQUNBLFVBQVUsTUFBTSxVQUFVLEtBQUs7QUFBQTtBQUFBLFFBQ2pDLElBQ0UsUUFBUSxXQUFXLElBQ3JCLGdCQUFBVixLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLCtEQUE4QyxJQUU3RSxnQkFBQUE7QUFBQSxVQUFDO0FBQUE7QUFBQSxZQUNDLFNBQU87QUFBQSxZQUNQLE9BQU87QUFBQSxZQUNQLFVBQVUsTUFBTTtBQUFBLFlBQ2hCLFVBQVU7QUFBQSxZQUNWO0FBQUEsWUFDQSxZQUFZO0FBQUEsWUFDWixTQUFPO0FBQUEsWUFDUCxVQUFVLENBQUMsTUFBTSxTQUFTLEVBQUUsSUFBSTtBQUFBLFlBQ2hDLFVBQVU7QUFBQSxZQUNWLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxNQUFNO0FBQzdCLG9CQUFNLEtBQUssV0FBVyxFQUFFLE1BQU0sS0FBSyxXQUFXO0FBQzlDLHFCQUNFLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLGdDQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxFQUFFLEdBQUksbUJBQVMsWUFBTyxNQUFLO0FBQUEsZ0JBQ3hELGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sR0FBRyxNQUFNLEdBQUksYUFBRyxNQUFLO0FBQUEsZ0JBQzNDLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPLElBQUksR0FBRyxHQUFJLGNBQUksRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDLElBQUc7QUFBQSxnQkFDeEUsRUFBRSxVQUFVLGFBQWEsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksb0JBQU07QUFBQSxnQkFDaEUsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxHQUFHLFFBQVEsRUFBRSxHQUNuQywwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxFQUFFLFdBQVcsVUFBVSxNQUFNLE1BQU0sR0FDNUUsWUFBRSxXQUFXLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxjQUFjLEdBQUcsRUFBRSxTQUFTLFdBQVcsRUFBRSxRQUMxRixHQUNGO0FBQUEsZ0JBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLFVBQVUsV0FBVyxHQUFJLGVBQUssRUFBRSxRQUFRLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBRztBQUFBLGlCQUN0RjtBQUFBLFlBRUo7QUFBQTtBQUFBLFFBQ0YsR0FFSjtBQUFBLFFBQ0MsQ0FBQyxPQUFPLEtBQ1AsZ0JBQUFBO0FBQUEsVUFBQztBQUFBO0FBQUEsWUFDQztBQUFBLFlBQ0EsT0FBTyxDQUFDLFFBQVE7QUFDZCxvQkFBTSxJQUFJLFNBQVM7QUFDbkIsa0JBQUksUUFBUSxJQUFLLFdBQVUsSUFBSTtBQUFBLHVCQUN0QixLQUFLLFFBQVEsSUFBSyxVQUFTLEVBQUUsSUFBSTtBQUFBLHVCQUNqQyxLQUFLLFFBQVEsSUFBSyxhQUFZLEVBQUUsSUFBSTtBQUFBLHVCQUNwQyxLQUFLLFFBQVEsSUFBSyxVQUFTLEVBQUUsSUFBSTtBQUFBLHVCQUNqQyxLQUFLLFFBQVEsSUFBSyxZQUFXLEVBQUUsSUFBSTtBQUFBLFlBQzlDO0FBQUE7QUFBQSxRQUNGO0FBQUE7QUFBQTtBQUFBLEVBRUo7QUFFSjtBQUVBLFNBQVMsUUFBUSxFQUFFLFNBQVMsTUFBTSxHQUFHO0FBQ25DLEVBQUFJLFVBQVMsQ0FBQyxVQUFVO0FBQ2xCLFFBQUksQ0FBQyxRQUFTO0FBQ2QsUUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLFNBQVMsTUFBTSxHQUFHLEdBQUc7QUFDakQsWUFBTSxNQUFNLEdBQUc7QUFDZixZQUFNLGdCQUFnQjtBQUFBLElBQ3hCO0FBQUEsRUFDRixDQUFDO0FBQ0QsU0FBTztBQUNUOzs7QVhybUJ5QixnQkFBQU8sTUEwMkJuQixRQUFBQyxhQTEyQm1CO0FBNUt6QixJQUFNLGdCQUFnQjtBQUFBLEVBQ3BCLEVBQUUsS0FBSyxNQUFNLE1BQU0sNENBQTRDO0FBQUEsRUFDL0QsRUFBRSxLQUFLLE9BQU8sTUFBTSxrQ0FBa0M7QUFBQSxFQUN0RCxFQUFFLEtBQUssVUFBVSxNQUFNLDJCQUEyQjtBQUFBLEVBQ2xELEVBQUUsS0FBSyxRQUFRLE1BQU0sMkJBQTJCO0FBQUEsRUFDaEQsRUFBRSxLQUFLLE9BQU8sTUFBTSwwQkFBMEI7QUFDaEQ7QUFFQSxJQUFNLFdBQVc7QUFBQSxFQUNmLEVBQUUsTUFBTSxTQUFTLE1BQU0sMkNBQTJDO0FBQUEsRUFDbEUsRUFBRSxNQUFNLFdBQVcsTUFBTSxtREFBbUQ7QUFBQSxFQUM1RSxFQUFFLE1BQU0sVUFBVSxNQUFNLDJDQUEyQztBQUFBLEVBQ25FLEVBQUUsTUFBTSxVQUFVLE1BQU0sZ0RBQWdEO0FBQUEsRUFDeEUsRUFBRSxNQUFNLE9BQU8sTUFBTSxzQ0FBc0M7QUFBQSxFQUMzRCxFQUFFLE1BQU0sV0FBVyxNQUFNLDJEQUEyRDtBQUFBLEVBQ3BGLEVBQUUsTUFBTSxPQUFPLE1BQU0sc0RBQXNEO0FBQUEsRUFDM0UsRUFBRSxNQUFNLFVBQVUsTUFBTSxpREFBaUQ7QUFBQSxFQUN6RSxFQUFFLE1BQU0sWUFBWSxNQUFNLG1EQUFtRDtBQUFBLEVBQzdFLEVBQUUsTUFBTSxTQUFTLE1BQU0sOERBQThEO0FBQUEsRUFDckYsRUFBRSxNQUFNLFVBQVUsTUFBTSxpREFBaUQ7QUFBQSxFQUN6RSxFQUFFLE1BQU0sVUFBVSxNQUFNLG9DQUFvQztBQUFBLEVBQzVELEVBQUUsTUFBTSxTQUFTLE1BQU0sNENBQTRDO0FBQUEsRUFDbkUsRUFBRSxNQUFNLE9BQU8sTUFBTSw2Q0FBNkM7QUFBQSxFQUNsRSxFQUFFLE1BQU0sVUFBVSxNQUFNLG9DQUFvQztBQUFBLEVBQzVELEVBQUUsTUFBTSxXQUFXLE1BQU0scUNBQXFDO0FBQUEsRUFDOUQsRUFBRSxNQUFNLFVBQVUsTUFBTSwwQ0FBMEM7QUFBQSxFQUNsRSxFQUFFLE1BQU0sV0FBVyxNQUFNLHdEQUF3RDtBQUFBLEVBQ2pGLEVBQUUsTUFBTSxTQUFTLE1BQU0scURBQXFEO0FBQUEsRUFDNUUsRUFBRSxNQUFNLFFBQVEsTUFBTSw2Q0FBNkM7QUFBQSxFQUNuRSxFQUFFLE1BQU0sVUFBVSxNQUFNLG1EQUFtRDtBQUFBLEVBQzNFLEVBQUUsTUFBTSxRQUFRLE1BQU0sc0NBQXNDO0FBQzlEO0FBRUEsSUFBTSxpQkFBaUI7QUFBQSxFQUNyQixLQUFLO0FBQUEsRUFDTCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQ1I7QUFFQSxJQUFNLGlCQUFpQixDQUFDLFdBQVcsV0FBVyxZQUFZO0FBQzFELElBQU0sZ0JBQWdCLENBQUMsV0FBVyxZQUFZO0FBRXZDLFNBQVMsSUFBSSxFQUFFLE1BQUFDLE1BQUssR0FBRztBQUM1QixRQUFNLEVBQUUsS0FBSyxNQUFNLFNBQUFDLFVBQVMsUUFBQUMsU0FBUSxRQUFRLEtBQUssU0FBUyxlQUFlLElBQUlGO0FBRTdFLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUcsY0FBYSxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQzFELFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUEsY0FBYSxDQUFDLENBQUM7QUFDN0MsUUFBTSxDQUFDLFdBQVcsWUFBWSxJQUFJQSxjQUFhLElBQUk7QUFDbkQsUUFBTSxDQUFDLGFBQWEsY0FBYyxJQUFJQSxjQUFhLEtBQUs7QUFDeEQsUUFBTSxDQUFDLE1BQU0sT0FBTyxJQUFJQSxjQUFhLEtBQUs7QUFDMUMsUUFBTSxDQUFDLFlBQVksYUFBYSxJQUFJQSxjQUFhLEtBQUs7QUFDdEQsUUFBTSxDQUFDLFdBQVcsWUFBWSxJQUFJQSxjQUFhLENBQUM7QUFDaEQsUUFBTSxDQUFDLE9BQU8sUUFBUSxJQUFJQSxjQUFhLEVBQUU7QUFDekMsUUFBTSxDQUFDQyxRQUFPLFFBQVEsSUFBSUQsY0FBYUgsTUFBSyxZQUFZO0FBQ3hELFFBQU0sQ0FBQ0ssZUFBYyxlQUFlLElBQUlGLGNBQWFILE1BQUssWUFBWTtBQUN0RSxRQUFNLENBQUMsUUFBUSxTQUFTLElBQUlHLGNBQWFILE1BQUssYUFBYTtBQUMzRCxRQUFNLENBQUMsZUFBZSxnQkFBZ0IsSUFBSUcsY0FBYUgsTUFBSyxhQUFhO0FBQ3pFLFFBQU0sQ0FBQyxpQkFBaUIsa0JBQWtCLElBQUlHLGNBQWEsS0FBSztBQUNoRSxRQUFNLENBQUMsUUFBUSxTQUFTLElBQUlBLGNBQWEsQ0FBQyxDQUFDO0FBQzNDLFFBQU0sQ0FBQyxNQUFNLE9BQU8sSUFBSUEsY0FBYSxDQUFDLENBQUM7QUFDdkMsUUFBTSxDQUFDLFNBQVMsVUFBVSxJQUFJQSxjQUFhLEVBQUU7QUFDN0MsUUFBTSxDQUFDLFVBQVUsV0FBVyxJQUFJQSxjQUFhLENBQUM7QUFDOUMsUUFBTSxDQUFDLFVBQVUsV0FBVyxJQUFJQSxjQUFhLElBQUk7QUFDakQsUUFBTSxDQUFDLFdBQVcsWUFBWSxJQUFJQSxjQUFhLENBQUM7QUFDaEQsUUFBTSxDQUFDLFVBQVUsV0FBVyxJQUFJQSxjQUFhLENBQUMsQ0FBQztBQUMvQyxRQUFNLENBQUMsZ0JBQWdCLGlCQUFpQixJQUFJQSxjQUFhLEtBQUs7QUFDOUQsUUFBTSxDQUFDLE1BQU0sT0FBTyxJQUFJQSxjQUFhLE1BQU07QUFDM0MsUUFBTSxDQUFDLFNBQVMsVUFBVSxJQUFJQSxjQUFhLEtBQUs7QUFDaEQsUUFBTSxDQUFDLGdCQUFnQixpQkFBaUIsSUFBSUEsY0FBYSxLQUFLO0FBQzlELFFBQU0sQ0FBQyxrQkFBa0IsbUJBQW1CLElBQUlBLGNBQWEsS0FBSztBQUNsRSxRQUFNLENBQUMsV0FBVyxZQUFZLElBQUlBLGNBQWEsQ0FBQztBQUNoRCxRQUFNLENBQUMsYUFBYSxjQUFjLElBQUlBLGNBQWEsQ0FBQyxDQUFDO0FBQ3JELFFBQU0sQ0FBQyxpQkFBaUIsa0JBQWtCLElBQUlBLGNBQWEsS0FBSztBQUNoRSxRQUFNLENBQUMsYUFBYSxjQUFjLElBQUlBLGNBQWEsQ0FBQztBQUNwRCxRQUFNLENBQUMsZ0JBQWdCLGlCQUFpQixJQUFJQSxjQUFhLENBQUMsQ0FBQztBQUMzRCxRQUFNLENBQUMsZUFBZSxnQkFBZ0IsSUFBSUEsY0FBYSxLQUFLO0FBQzVELFFBQU0sQ0FBQyxjQUFjLGVBQWUsSUFBSUEsY0FBYSxLQUFLO0FBQzFELFFBQU0sQ0FBQyxrQkFBa0IsbUJBQW1CLElBQUlBLGNBQWEsS0FBSztBQUNsRSxRQUFNLENBQUMsV0FBVyxZQUFZLElBQUlBLGNBQWEsSUFBSTtBQUNuRCxRQUFNLENBQUMsaUJBQWlCLGtCQUFrQixJQUFJQSxjQUFhLEtBQUs7QUFDaEUsUUFBTSxDQUFDLGtCQUFrQixtQkFBbUIsSUFBSUEsY0FBYSxLQUFLO0FBQ2xFLFFBQU0sQ0FBQyxrQkFBa0IsbUJBQW1CLElBQUlBLGNBQWEsS0FBSztBQUNsRSxRQUFNLENBQUMsZUFBZSxnQkFBZ0IsSUFBSUEsY0FBYSxDQUFDLENBQUM7QUFDekQsUUFBTSxDQUFDLGVBQWUsZ0JBQWdCLElBQUlBLGNBQWEsQ0FBQztBQUN4RCxRQUFNLENBQUMsVUFBVSxXQUFXLElBQUlBLGNBQWEsQ0FBQyxDQUFDO0FBQy9DLFFBQU0sQ0FBQyxpQkFBaUIsa0JBQWtCLElBQUlBLGNBQWEsS0FBSztBQUNoRSxRQUFNLENBQUMsWUFBWSxhQUFhLElBQUlBLGNBQWEsSUFBSSxLQUFLLENBQUM7QUFDM0QsUUFBTSxDQUFDLFlBQVksYUFBYSxJQUFJQSxjQUFhLEtBQUs7QUFDdEQsUUFBTSxDQUFDLFdBQVcsWUFBWSxJQUFJQSxjQUFhLENBQUM7QUFDaEQsUUFBTSxDQUFDLFlBQVksYUFBYSxJQUFJQSxjQUFhLElBQUk7QUFDckQsUUFBTSxDQUFDLGNBQWMsZUFBZSxJQUFJQSxjQUFhLElBQUk7QUFDekQsUUFBTSxDQUFDLFFBQVEsU0FBUyxJQUFJQSxjQUFhLENBQUM7QUFDMUMsUUFBTSxDQUFDLFFBQVEsU0FBUyxJQUFJQSxjQUFhLElBQUk7QUFFN0MsUUFBTSxPQUFPSCxNQUFLO0FBQ2xCLE9BQUssWUFBWTtBQUNqQixPQUFLLGNBQWMsQ0FBQztBQUNwQixPQUFLLGNBQWM7QUFDbkIsT0FBSyxRQUFRLEtBQUssU0FBUztBQUMzQixPQUFLLGFBQWEsS0FBSyxjQUFjO0FBQ3JDLE9BQUssV0FBVztBQUNoQixPQUFLLGdCQUFnQixvQkFBSSxJQUFJO0FBQzdCLE9BQUssZUFBZTtBQUVwQixFQUFBQSxNQUFLLGFBQWEsTUFBTSxjQUFjQSxNQUFLLElBQUksS0FBSyxDQUFDLENBQUM7QUFDdEQsRUFBQUEsTUFBSyxnQkFBZ0IsTUFBTSxpQkFBaUIsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQ3pELEVBQUFBLE1BQUssaUJBQWlCLE1BQU0saUJBQWlCLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUMxRCxFQUFBQSxNQUFLLGVBQWUsQ0FBQyxXQUFXO0FBQzlCLFVBQU0sV0FBVyxPQUFPLEVBQUUsUUFBUTtBQUNsQztBQUFBLE1BQ0UsMkNBQTJDLE9BQU8sRUFBRSx5QkFBeUIsT0FBTyxJQUFJO0FBQUEsTUFDeEYsRUFBRSxNQUFNLEtBQUs7QUFBQSxJQUNmO0FBQUEsRUFDRixDQUFDO0FBQ0QsRUFBQUEsTUFBSyxjQUFjLENBQUMsVUFBVTtBQUM1QixRQUFJLE1BQU0sYUFBYSxTQUFTO0FBQzlCLFlBQU0sU0FBUyxNQUFNLEVBQUUsU0FBUztBQUNoQztBQUFBLElBQ0Y7QUFDQSxRQUFJLE1BQU0sYUFBYSxRQUFRO0FBQzdCLFlBQU0sU0FBUyxNQUFNLEVBQUUsU0FBUztBQUNoQyxpQkFBVyxtRUFBbUUsTUFBTSxFQUFFLEtBQUssTUFBTSxPQUFPLDJGQUEyRixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xOO0FBQUEsSUFDRjtBQUNBLFVBQU0sU0FBUyxNQUFNLEVBQUUscUJBQWtCLE1BQU0sUUFBUSxFQUFFO0FBQ3pELFVBQU0sT0FBT0EsTUFBSyxPQUFPLE9BQU8sTUFBTSxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUN4RDtBQUFBLE1BQ0UsMENBQTBDLE1BQU0sRUFBRSxLQUFLLE1BQU0sT0FBTyxzQkFBc0IsTUFBTSxRQUFRLE9BQ3JHLE9BQU87QUFBQTtBQUFBLEVBQXFCLElBQUksS0FBSztBQUFBLE1BQ3hDLEVBQUUsTUFBTSxLQUFLO0FBQUEsSUFDZjtBQUFBLEVBQ0YsQ0FBQztBQUVELFdBQVMsV0FBVyxNQUFNLEVBQUUsS0FBSyxHQUFHO0FBQ2xDLFNBQUssdUJBQXVCLENBQUM7QUFDN0IsU0FBSyxtQkFBbUIsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQzNDLHFCQUFpQjtBQUFBLEVBQ25CO0FBRUEsV0FBUyxtQkFBbUI7QUFDMUIsUUFBSSxDQUFDLEtBQUssb0JBQW9CLFVBQVUsS0FBSyxLQUFLLEtBQUssTUFBTSxVQUFVLENBQUMsS0FBSyxRQUFTO0FBQ3RGLFVBQU0sUUFBUSxLQUFLO0FBQ25CLFNBQUsscUJBQXFCLENBQUM7QUFDM0IsWUFBUSxVQUFVLGVBQWUsRUFBRSxNQUFNLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ2pGLGFBQVM7QUFDVCxRQUFJLE1BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUcsY0FBYTtBQUFBLEVBQzlDO0FBRUEsUUFBTSxnQkFBZ0IsT0FBTyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLGNBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxJQUFJLE9BQU8sS0FBSyxFQUFFO0FBQzVILFFBQU0sZUFBZUEsTUFBSyxTQUFTLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sZ0JBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxJQUFJLFNBQVMsS0FBSyxFQUFFO0FBQ3RJLFFBQU0sU0FBUyxvQkFBSSxJQUFJO0FBQ3ZCLFFBQU0sV0FBVyxDQUFDO0FBQ2xCLGFBQVcsS0FBSyxDQUFDLEdBQUcsVUFBVSxHQUFHLGVBQWUsR0FBRyxZQUFZLEdBQUc7QUFDaEUsUUFBSSxPQUFPLElBQUksRUFBRSxJQUFJLEVBQUcsVUFBUyxLQUFLLEdBQUcsRUFBRSxRQUFRLFVBQVUsU0FBUyxLQUFLLEVBQUUsSUFBSSxHQUFHO0FBQUEsUUFDL0UsUUFBTyxJQUFJLEVBQUUsTUFBTSxDQUFDO0FBQUEsRUFDM0I7QUFDQSxRQUFNLGNBQWMsQ0FBQyxHQUFHLE9BQU8sT0FBTyxDQUFDO0FBQ3ZDLE1BQUksU0FBUyxVQUFVLENBQUMsS0FBSyxnQkFBZ0I7QUFDM0MsU0FBSyxpQkFBaUI7QUFDdEIsZUFBVyxNQUFNLE1BQU0sK0NBQStDLFNBQVMsS0FBSyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUM7QUFBQSxFQUNqRztBQUVBLFFBQU0sUUFBUSxTQUFTO0FBQUEsSUFDckIsVUFBVTtBQUFBLElBQ1YsVUFBVTtBQUFBLElBQ1YsUUFBUSxDQUFDLFlBQVksZ0JBQUFGLEtBQUMsVUFBSyxPQUFPLEVBQUUsSUFBSSxPQUFPLEdBQUcsT0FBTyxTQUFTLE1BQU0sS0FBSyxHQUFJLGNBQUksT0FBTyxLQUFJO0FBQUEsRUFDbEcsQ0FBQztBQUVELFdBQVMsTUFBTSxLQUFLO0FBQ2xCLFVBQU0sR0FBRztBQUFBLEVBQ1g7QUFFQSxXQUFTLGdCQUFnQjtBQUN2QixRQUFJLENBQUMsS0FBSyxRQUFTLE1BQUssVUFBVSxjQUFjLEVBQUUsS0FBSyxLQUFLLENBQUM7QUFDN0QsV0FBTyxLQUFLLFlBQVksS0FBSyxVQUFVLFFBQVE7QUFDN0MsV0FBSyxRQUFRLE9BQU8sS0FBSyxVQUFVLEtBQUssU0FBUyxDQUFDO0FBQ2xELFdBQUs7QUFBQSxJQUNQO0FBQUEsRUFDRjtBQUVBLFdBQVMsUUFBUSxPQUFPO0FBQ3RCLFNBQUssVUFBVSxLQUFLLEtBQUs7QUFDekIsUUFBSSxLQUFLLFNBQVM7QUFDaEIsV0FBSyxRQUFRLE9BQU8sS0FBSztBQUN6QixXQUFLLFlBQVksS0FBSyxVQUFVO0FBQUEsSUFDbEM7QUFBQSxFQUNGO0FBRUEsV0FBUyxXQUFXO0FBQ2xCLFVBQU0sUUFBUSxZQUFZLEtBQUssU0FBUztBQUN4QyxlQUFXLEtBQUs7QUFDaEIsY0FBVSxNQUFNLEtBQUs7QUFDckIsSUFBQUUsTUFBSyxXQUFXLEVBQUUsUUFBUSxNQUFNLFNBQVMsZUFBZSxDQUFDO0FBQUEsRUFDM0Q7QUFFQSxXQUFTLFlBQVlNLFFBQU87QUFDMUIsVUFBTSxPQUFPLFVBQVU7QUFDdkIsUUFBSSxLQUFNLENBQUFBLE9BQU0sS0FBSyxFQUFFLE1BQU0sYUFBYSxLQUFLLENBQUM7QUFDaEQsaUJBQWEsSUFBSTtBQUFBLEVBQ25CO0FBRUEsaUJBQWUsWUFBWSxNQUFNO0FBQy9CLFVBQU0sRUFBRSxRQUFRLElBQUksb0JBQW9CLE1BQU0sS0FBSyxXQUFXO0FBQzlELFlBQVEsVUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3BFLGtCQUFjO0FBQ2QsYUFBUztBQUNULFVBQU0sYUFBYTtBQUFBLEVBQ3JCO0FBRUEsaUJBQWUsa0JBQWtCLGVBQWUsSUFBSTtBQUNsRCxRQUFJLEtBQUssS0FBSyxXQUFXLEVBQUcsUUFBTyxNQUFNLDRDQUE0QztBQUNyRixVQUFNLFFBQVEsUUFBUTtBQUN0QixRQUFJLE1BQU0sZ0JBQWdCLFNBQVMsRUFBRyxRQUFPLE1BQU0sd0JBQXdCO0FBRTNFLFFBQUksT0FBTztBQUNYLFFBQUlGLE9BQU0sRUFBRSxhQUFhLFNBQVM7QUFDaEMsYUFBTyxNQUFNLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxJQUFJO0FBQ2pELFVBQUksQ0FBQyxLQUFNLFFBQU8sTUFBTSxtREFBbUQ7QUFBQSxJQUM3RTtBQUVBLFVBQU0sVUFBVSxZQUFZLEtBQUs7QUFDakMsVUFBTSxXQUFXLFFBQVEsR0FBRyxFQUFFLEdBQUcsV0FBVyxRQUFRLEdBQUcsRUFBRSxHQUFHO0FBRTVELFVBQU0sYUFBYSxJQUFJLGdCQUFnQjtBQUN2QyxTQUFLLFFBQVE7QUFDYixZQUFRLElBQUk7QUFDWixrQkFBYyxJQUFJO0FBQ2xCLGlCQUFhLEtBQUssSUFBSSxDQUFDO0FBQ3ZCLFFBQUk7QUFDRixZQUFNLE1BQU0sTUFBTSxlQUFlO0FBQUEsUUFDL0IsU0FBUyxNQUFNO0FBQUEsUUFDZixXQUFXQSxPQUFNLEVBQUU7QUFBQSxRQUNuQjtBQUFBLFFBQ0EsUUFBUSxpQkFBaUIsWUFBWTtBQUFBLFFBQ3JDLFFBQVEsV0FBVztBQUFBLE1BQ3JCLENBQUM7QUFDRCxZQUFNLFVBQVUscUJBQXFCLEdBQUc7QUFDeEMsVUFBSSxDQUFDLFFBQVMsT0FBTSxJQUFJLE1BQU0sZUFBZTtBQUM3QyxjQUFRLFVBQVUsV0FBVyxFQUFFLFNBQVMsVUFBVSxhQUFhLEtBQUssU0FBUyxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQzVGLGVBQVM7QUFDVCxZQUFNLDhDQUEyQztBQUFBLElBQ25ELFNBQVMsS0FBSztBQUNaLFVBQUksV0FBVyxPQUFPLFFBQVMsT0FBTSxzQkFBc0I7QUFBQSxVQUN0RCxPQUFNLG1CQUFtQixPQUFPLElBQUksV0FBVyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0FBQUEsSUFDMUUsVUFBRTtBQUNBLG9CQUFjLEtBQUs7QUFDbkIsY0FBUSxLQUFLO0FBQ2IsV0FBSyxRQUFRO0FBQUEsSUFDZjtBQUVBLFVBQU0sSUFBSSxPQUFPO0FBQ2pCLFFBQUksRUFBRSxTQUFTLEdBQUc7QUFDaEIsZ0JBQVUsQ0FBQyxDQUFDO0FBQ1osVUFBSSxXQUFXLE9BQU8sUUFBUyxVQUFTLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFBQSxVQUMvQyxhQUFZLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFBQSxJQUMvQjtBQUFBLEVBQ0Y7QUFFQSxXQUFTLG1CQUFtQjtBQUMxQixRQUFJSixNQUFLLGdCQUFnQixTQUFTLEtBQUssS0FBSyxXQUFXLEVBQUc7QUFDMUQsVUFBTSxRQUFRSSxPQUFNLEVBQUU7QUFDdEIsVUFBTSxPQUFPLFFBQVEsRUFBRTtBQUN2QixRQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsUUFBUSxFQUFFLG9CQUFvQkEsT0FBTSxFQUFFLEtBQU07QUFDbkUsVUFBTSxRQUFRLE9BQU87QUFDckIsUUFBSSxTQUFTLE1BQU07QUFDakIsWUFBTSxXQUFXLEtBQUssTUFBTSxRQUFRLEdBQUcsQ0FBQyw2QkFBMEI7QUFDbEUsd0JBQWtCO0FBQUEsSUFDcEI7QUFBQSxFQUNGO0FBRUEsaUJBQWUsZUFBZTtBQUM1QixRQUFJLE9BQU87QUFDWCxRQUFJQSxPQUFNLEVBQUUsYUFBYSxTQUFTO0FBQ2hDLGFBQU8sTUFBTSxrQkFBa0IsRUFBRSxNQUFNLE1BQU0sSUFBSTtBQUNqRCxVQUFJLENBQUMsTUFBTTtBQUNULGNBQU0sbURBQW1EO0FBQ3pEO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFDQSxjQUFVLElBQUk7QUFDZCxZQUFRLElBQUk7QUFDWixpQkFBYSxLQUFLLElBQUksQ0FBQztBQUV2QixVQUFNLGFBQWEsSUFBSSxnQkFBZ0I7QUFDdkMsU0FBSyxRQUFRO0FBQ2IsVUFBTSxlQUFlLElBQUksSUFBSSxRQUFRLE1BQU07QUFDM0MsSUFBQUosTUFBSyxTQUFTLE1BQU0saUJBQWlCQSxNQUFLLElBQUksRUFBRSxNQUFNLE1BQU1BLE1BQUssTUFBTSxLQUFLQSxNQUFLO0FBQ2pGLElBQUFBLE1BQUssV0FBVyxNQUFNLG1CQUFtQkEsTUFBSyxJQUFJLEVBQUUsTUFBTSxNQUFNQSxNQUFLLFFBQVEsS0FBS0EsTUFBSztBQUN2RixVQUFNLGNBQWNBLE1BQUs7QUFDekIsVUFBTSxlQUFlLE1BQU0sY0FBYyxFQUFFLEtBQUssTUFBTUEsTUFBSyxLQUFLLENBQUMsRUFBRSxNQUFNLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsRUFBRSxFQUFFO0FBQzFHLGVBQVcsV0FBVyxhQUFhLFFBQVE7QUFDekMsWUFBTSxNQUFNLEdBQUcsUUFBUSxJQUFJLElBQUksUUFBUSxLQUFLO0FBQzVDLFVBQUksQ0FBQyxLQUFLLGFBQWEsSUFBSSxHQUFHLEdBQUc7QUFDL0I7QUFBQyxTQUFDLEtBQUssZ0JBQWdCLG9CQUFJLElBQUksR0FBRyxJQUFJLEdBQUc7QUFDekMsY0FBTSxpQkFBaUIsUUFBUSxLQUFLLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFNLFFBQVEsS0FBSyxFQUFFO0FBQUEsTUFDM0U7QUFBQSxJQUNGO0FBQ0EsVUFBTSxFQUFFLE9BQU8sU0FBUyxJQUFJLGNBQWM7QUFBQSxNQUN4QztBQUFBLE1BQ0E7QUFBQSxNQUNBLFFBQVE7QUFBQSxNQUNSLFFBQVFBLE1BQUs7QUFBQSxNQUNiLFNBQVNBLE1BQUs7QUFBQSxNQUNkLFFBQVFBLE1BQUs7QUFBQSxNQUNiLFVBQVUsSUFBSSxNQUFNO0FBQUEsTUFDcEIsV0FBVyxhQUFhO0FBQUEsTUFDeEIsUUFBUSxXQUFXO0FBQUEsSUFDckIsQ0FBQztBQUVELFNBQUssZUFBZTtBQUNwQixVQUFNLFdBQVcsQ0FBQyxVQUFVO0FBQzFCLFVBQUksTUFBTSxTQUFTLFlBQVk7QUFDN0IsYUFBSyxnQkFBZ0IsTUFBTTtBQUMzQix1QkFBZSxJQUFJO0FBQUEsTUFDckIsV0FBVyxNQUFNLFNBQVMsV0FBVztBQUNuQyx1QkFBZSxLQUFLO0FBQ3BCLHFCQUFhLENBQUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxPQUFPO0FBQUEsTUFDL0MsV0FBVyxNQUFNLFNBQVMsb0JBQW9CO0FBQzVDLHVCQUFlLEtBQUs7QUFDcEIsbUJBQVcsQ0FBQyxNQUFNO0FBQ2hCLGdCQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDbEIsc0JBQVksSUFBSTtBQUNoQixpQkFBTztBQUFBLFFBQ1QsQ0FBQztBQUFBLE1BQ0gsV0FBVyxNQUFNLFNBQVMsa0JBQWtCO0FBQzFDLG1CQUFXLENBQUMsTUFBTTtBQUNoQixnQkFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ2xCLHNCQUFZLElBQUk7QUFDaEIsY0FBSSxPQUFPLENBQUM7QUFDWixjQUFJO0FBQ0YsbUJBQU8sS0FBSyxNQUFNLE1BQU0sS0FBSyxTQUFTLFNBQVM7QUFBQSxVQUNqRCxRQUFRO0FBQUEsVUFBQztBQUNULGVBQUssS0FBSztBQUFBLFlBQ1IsTUFBTTtBQUFBLFlBQ04sUUFBUSxNQUFNLEtBQUs7QUFBQSxZQUNuQixNQUFNLE1BQU0sS0FBSyxTQUFTO0FBQUEsWUFDMUIsT0FBTyxhQUFRLE1BQU0sS0FBSyxTQUFTLE1BQU0sSUFBSTtBQUFBLFlBQzdDLFFBQVE7QUFBQSxVQUNWLENBQUM7QUFDRCxpQkFBTztBQUFBLFFBQ1QsQ0FBQztBQUFBLE1BQ0gsV0FBVyxNQUFNLFNBQVMsbUJBQW1CLE1BQU0sU0FBUyxjQUFjO0FBQ3hFLGNBQU0sUUFBUSxTQUFTLFFBQVEsR0FBRyxFQUFFO0FBQ3BDO0FBQUEsVUFBVyxDQUFDLE1BQ1YsRUFBRTtBQUFBLFlBQUksQ0FBQyxTQUNMLEtBQUssU0FBUyxVQUFVLEtBQUssV0FBVyxNQUFNLEtBQUssS0FDL0MsRUFBRSxHQUFHLE1BQU0sR0FBSSxPQUFPLFdBQVcsTUFBTSxLQUFLLEtBQUssUUFBUSxDQUFDLEdBQUksTUFBTSxRQUFRLFFBQVEsT0FBTyxVQUFVLE9BQU8sSUFDNUc7QUFBQSxVQUNOO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBRUEsUUFBSTtBQUNKLFFBQUk7QUFDRixlQUFTLE1BQU0sUUFBUTtBQUFBLFFBQ3JCLFNBQVMsUUFBUSxFQUFFO0FBQUEsUUFDbkI7QUFBQSxRQUNBO0FBQUEsUUFDQSxXQUFXSSxPQUFNLEVBQUU7QUFBQSxRQUNuQixRQUFRLGNBQWMsSUFBSSxPQUFPLEtBQUssU0FBUztBQUFBLFFBQy9DO0FBQUEsUUFDQSxRQUFRLGtCQUFrQjtBQUFBLFVBQ3hCO0FBQUEsVUFDQSxjQUFjLGVBQWU7QUFBQSxVQUM3QixRQUFRLFlBQVksS0FBSztBQUFBLFVBQ3pCLGlCQUFpQixZQUFZLE1BQU1KLE1BQUssT0FBTyxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUMsQ0FBQyxHQUFHQSxNQUFLLElBQUk7QUFBQSxRQUNsRixDQUFDO0FBQUEsUUFDRCxRQUFRLFdBQVc7QUFBQSxRQUNuQjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsU0FBUyxLQUFLO0FBQ1osaUJBQVcsQ0FBQyxDQUFDO0FBQ2IsbUJBQWEsSUFBSTtBQUNqQixxQkFBZSxLQUFLO0FBQ3BCLGNBQVEsS0FBSztBQUNiLFdBQUssUUFBUTtBQUNiLFlBQU0sVUFBVSxPQUFPLElBQUksV0FBVyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0FBQzFEO0FBQUEsSUFDRjtBQUVBLFFBQUksS0FBSyxhQUFjLFNBQVEsVUFBVSxZQUFZLEVBQUUsTUFBTSxLQUFLLGFBQWEsQ0FBQyxDQUFDO0FBQ2pGLGVBQVcsV0FBVyxPQUFPLFNBQVUsU0FBUSxVQUFVLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNoRixlQUFXLFNBQVMsU0FBUyxRQUFTLFNBQVEsVUFBVSxhQUFhLEtBQUssQ0FBQztBQUMzRSxlQUFXLFFBQVEsUUFBUSxRQUFRO0FBQ2pDLFVBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFHLFNBQVEsVUFBVSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUFBLElBQzFFO0FBQ0EsUUFBSSxPQUFPLE1BQU8sU0FBUSxVQUFVLFNBQVMsRUFBRSxPQUFPSSxPQUFNLEVBQUUsTUFBTSxPQUFPLE9BQU8sT0FBTyxZQUFZLE9BQU8saUJBQWlCLENBQUMsQ0FBQztBQUMvSCxRQUFJLE9BQU8sWUFBYSxTQUFRLFVBQVUsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUUxRCxlQUFXLENBQUMsQ0FBQztBQUNiLGlCQUFhLElBQUk7QUFDakIsbUJBQWUsS0FBSztBQUNwQixhQUFTO0FBQ1QsWUFBUSxLQUFLO0FBQ2IsU0FBSyxRQUFRO0FBQ2IsUUFBSSxPQUFPLFFBQVMsT0FBTSxxQ0FBa0M7QUFFNUQsVUFBTSxJQUFJLE9BQU87QUFDakIsUUFBSSxFQUFFLFNBQVMsR0FBRztBQUNoQixnQkFBVSxDQUFDLENBQUM7QUFDWixVQUFJLE9BQU8sWUFBYSxVQUFTLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFBQSxXQUN4QztBQUNILG9CQUFZLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDeEI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUNBLHFCQUFpQjtBQUNqQixxQkFBaUI7QUFBQSxFQUNuQjtBQUVBLFdBQVMsaUJBQWlCLE1BQU07QUFDOUIsUUFBSSxTQUFTLFFBQVMsUUFBTyxPQUFPLEtBQUssY0FBYztBQUN2RCxRQUFJLFNBQVMsU0FBVSxRQUFPLENBQUMsV0FBVyxPQUFPLFVBQVUsUUFBUSxLQUFLO0FBQ3hFLFFBQUksU0FBUyxRQUFTLFFBQU9GLFFBQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxjQUFjLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUk7QUFDMUYsVUFBTSxNQUFNLFlBQVksS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUk7QUFDbkQsUUFBSSxLQUFLLFNBQVMsS0FBSyxRQUFTLFFBQU8sU0FBUztBQUNoRCxXQUFPO0FBQUEsRUFDVDtBQUVBLFdBQVMsb0JBQW9CO0FBQzNCLGtCQUFjLEtBQUs7QUFDbkIsaUJBQWEsQ0FBQztBQUFBLEVBQ2hCO0FBRUEsV0FBUyxpQkFBaUIsT0FBTyxLQUFLLFdBQVc7QUFDL0MsYUFBUyxnQkFBZ0IsT0FBTyxLQUFLLFNBQVMsQ0FBQztBQUMvQyxzQkFBa0I7QUFBQSxFQUNwQjtBQUVBLFdBQVMsS0FBSyxNQUFNO0FBQ2xCLFVBQU0sUUFBUSxLQUFLLEtBQUs7QUFDeEIsUUFBSSxDQUFDLE1BQU87QUFDWixzQkFBa0I7QUFDbEIsUUFBSSxNQUFNLFdBQVcsR0FBRyxHQUFHO0FBQ3pCLFlBQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxDQUFDLEVBQUUsTUFBTSxLQUFLO0FBQ2xELFlBQU0sUUFBUSxZQUFZLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxLQUFLLFlBQVksQ0FBQztBQUNuRSxVQUFJLE9BQU87QUFDVCxpQkFBUyxFQUFFO0FBQ1gsbUJBQVcsT0FBTyxLQUFLLEtBQUssR0FBRyxDQUFDO0FBQ2hDO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFDQSxZQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLE1BQU0sT0FBTyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN0RCxlQUFXLEVBQUU7QUFDYixpQkFBYSxNQUFNLEtBQUssRUFBRSxNQUFNLE1BQU07QUFBQSxJQUFDLENBQUM7QUFDeEMsUUFBSSxLQUFLLEdBQUc7QUFDVixnQkFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQzlCO0FBQUEsSUFDRjtBQUNBLGdCQUFZLEtBQUs7QUFBQSxFQUNuQjtBQUVBLFdBQVMsWUFBWTtBQUNuQixRQUFJLENBQUMsS0FBSyxFQUFHO0FBQ2IsU0FBSyxPQUFPLE1BQU07QUFBQSxFQUNwQjtBQUVBLGlCQUFlLFdBQVcsR0FBRyxPQUFPLElBQUk7QUFDdEMsUUFBSSxPQUFPLFNBQVMsU0FBVSxRQUFPO0FBQ3JDLGFBQVMsRUFBRTtBQUNYLGdCQUFZLElBQUk7QUFDaEIsUUFBSSxFQUFFLFNBQVMsVUFBVTtBQUN2QixVQUFJLENBQUMsS0FBTSxRQUFPLE1BQU0sMkJBQTJCO0FBQ25ELGNBQVEsVUFBVSxTQUFTLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUMxQyxvQkFBYztBQUNkLGVBQVM7QUFDVCxZQUFNLHVCQUF1QixJQUFJLEdBQUc7QUFDcEM7QUFBQSxJQUNGO0FBQ0EsUUFBSSxFQUFFLFNBQVMsU0FBUztBQUN0QixZQUFNLFFBQVEsT0FBTyxLQUFLLGNBQWM7QUFDeEMsWUFBTSxTQUFTLE9BQU8sT0FBTyxjQUFjO0FBQzNDLFVBQUk7QUFDSixVQUFJLENBQUMsTUFBTTtBQUNULGNBQU0sUUFBUSxPQUFPLFFBQVEsUUFBUSxFQUFFLEtBQUssSUFBSSxLQUFLLE9BQU87QUFDNUQsZ0JBQVEsT0FBTyxJQUFJO0FBQUEsTUFDckIsT0FBTztBQUNMLGdCQUFRLGVBQWUsS0FBSyxZQUFZLENBQUMsTUFBTSxvQkFBb0IsS0FBSyxJQUFJLElBQUksT0FBTztBQUN2RixZQUFJLENBQUMsTUFBTyxRQUFPLE1BQU0sc0NBQXNDLE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBUTtBQUFBLE1BQ3hGO0FBQ0EsY0FBUSxVQUFVLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyQyxvQkFBYztBQUNkLGVBQVM7QUFDVCxZQUFNLE9BQU8sTUFBTSxPQUFPLFFBQVEsS0FBSyxDQUFDO0FBQ3hDLFlBQU0sa0JBQWtCLFFBQVEsS0FBSyxFQUFFO0FBQ3ZDO0FBQUEsSUFDRjtBQUNBLFFBQUksRUFBRSxPQUFPO0FBQ1gsWUFBTSxPQUFPLE1BQU0sT0FBTyxLQUFLLEVBQUUsSUFBSTtBQUNyQyxVQUFJLENBQUMsS0FBTSxRQUFPLE1BQU0sd0JBQXdCLEVBQUUsSUFBSSxFQUFFO0FBQ3hELGNBQVEsVUFBVSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxPQUFPLENBQUMsQ0FBQztBQUM1RCxXQUFLO0FBQUE7QUFBQSxFQUEyQyxJQUFJLEVBQUU7QUFDdEQ7QUFBQSxJQUNGO0FBQ0EsUUFBSSxFQUFFLFNBQVM7QUFDYixZQUFNLE9BQU8sTUFBTUYsTUFBSyxTQUFTLEtBQUssRUFBRSxNQUFNLElBQUk7QUFDbEQsVUFBSSxDQUFDLEtBQU0sUUFBTyxNQUFNLDBCQUEwQixFQUFFLElBQUksRUFBRTtBQUMxRCxXQUFLLElBQUk7QUFDVDtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUUsU0FBUyxVQUFXLFFBQU8saUJBQWlCO0FBQ2xELFFBQUksRUFBRSxTQUFTLFNBQVM7QUFDdEIsVUFBSSxDQUFDLEtBQU0sUUFBTyxrQkFBa0IsSUFBSTtBQUN4QyxZQUFNLFFBQVFFLFFBQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUk7QUFDaEQsWUFBTSxRQUFRLENBQUMsU0FBUyxLQUFLLFNBQVMsR0FBRyxJQUFJLFdBQVcsTUFBTUYsTUFBSyxTQUFTLElBQUk7QUFDaEYsWUFBTSxTQUFTLFNBQVMsUUFDcEIsQ0FBQyxJQUNERSxRQUNHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUN4QyxPQUFPLENBQUMsQ0FBQyxLQUFLLE1BQU0sU0FBUyxDQUFDLEVBQzlCLEtBQUssQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDakMsWUFBTSxPQUFPLFNBQVMsU0FBUyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQzVDLFVBQUksQ0FBQyxLQUFNLFFBQU8sTUFBTSwrQkFBK0IsSUFBSSxHQUFHO0FBQzlELFVBQUksS0FBSyxjQUFjLE1BQU8sUUFBTyxNQUFNLE9BQU8sS0FBSyxPQUFPLCtCQUErQixLQUFLLElBQUksRUFBRTtBQUN4RyxjQUFRLFVBQVUsZ0JBQWdCLEVBQUUsTUFBTUUsT0FBTSxFQUFFLE1BQU0sSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3hFLGVBQVMsSUFBSTtBQUNiLFlBQU0sUUFBUSxnQkFBZ0IsS0FBSyxJQUFJLHVDQUF1QyxnQkFBZ0IsS0FBSyxJQUFJLEVBQUU7QUFDekc7QUFBQSxJQUNGO0FBQ0EsUUFBSSxFQUFFLFNBQVMsVUFBVTtBQUN2QixVQUFJLENBQUMsY0FBYyxFQUFHLFFBQU8sTUFBTSxHQUFHQSxPQUFNLEVBQUUsSUFBSSxrQ0FBa0M7QUFDcEYsVUFBSSxDQUFDLEtBQU0sUUFBTyxtQkFBbUIsSUFBSTtBQUN6QyxZQUFNLFFBQVEsS0FBSyxZQUFZO0FBQy9CLFVBQUksVUFBVSxVQUFXLFFBQU8saUJBQWlCLElBQUk7QUFDckQsVUFBSSxDQUFDLGNBQWMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEtBQUssRUFBRyxRQUFPLE1BQU0sOENBQThDO0FBQzVHLGFBQU8saUJBQWlCLEtBQUs7QUFBQSxJQUMvQjtBQUNBLFFBQUksRUFBRSxTQUFTLE9BQVEsUUFBTyxRQUFRLE1BQU07QUFDNUMsUUFBSSxFQUFFLFNBQVMsTUFBTyxRQUFPLGdCQUFnQixJQUFJO0FBQ2pELFFBQUksRUFBRSxTQUFTLFNBQVUsUUFBTyxtQkFBbUIsSUFBSTtBQUN2RCxRQUFJLEVBQUUsU0FBUyxVQUFXLFFBQU8sb0JBQW9CLElBQUk7QUFDekQsUUFBSSxFQUFFLFNBQVMsVUFBVTtBQUN2QixZQUFNLFdBQVcsTUFBTUosTUFBSyxPQUFPLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQyxDQUFDO0FBQ3hELGFBQU8sYUFBYTtBQUFBLFFBQ2xCLE9BQU8sZUFBWSxZQUFZQSxNQUFLLElBQUksQ0FBQztBQUFBLFFBQ3pDLE1BQU0sU0FBUyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sRUFBRSxhQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFBQSxNQUNsRixDQUFDO0FBQUEsSUFDSDtBQUNBLFFBQUksRUFBRSxTQUFTLFVBQVU7QUFDdkIseUJBQW1CLElBQUk7QUFDdkIsc0JBQWdCLFlBQVksQ0FBQztBQUM3QjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUUsU0FBUyxVQUFXLFFBQU8saUJBQWlCO0FBQ2xELFFBQUksRUFBRSxTQUFTLE9BQU87QUFDcEIsWUFBTSxXQUFXQSxNQUFLLFNBQVNBLE1BQUssTUFBTSxzQkFBbUIsWUFBWUEsTUFBSyxJQUFJLENBQUMsS0FBSztBQUN4RixhQUFPLE1BQU0sR0FBR0EsTUFBSyxVQUFVLEdBQUcsUUFBUSxFQUFFO0FBQUEsSUFDOUM7QUFDQSxRQUFJLEVBQUUsU0FBUyxVQUFVO0FBQ3ZCLGFBQU8sYUFBYTtBQUFBLFFBQ2xCLE9BQU87QUFBQSxRQUNQLE1BQU0sT0FBTyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLEVBQUUsYUFBYSxNQUFNLEVBQUUsT0FBTyxFQUFFO0FBQUEsTUFDeEYsQ0FBQztBQUFBLElBQ0g7QUFDQSxRQUFJLEVBQUUsU0FBUyxZQUFZO0FBQ3pCLGFBQU8sYUFBYTtBQUFBLFFBQ2xCLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxVQUNKLEdBQUcsU0FBUyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLElBQUksTUFBTSxNQUFNLFVBQVUsRUFBRTtBQUFBLFVBQ3BGLEdBQUdBLE1BQUssU0FBUyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLGFBQWEsTUFBTSxJQUFJLE9BQU8sRUFBRTtBQUFBLFFBQzFHO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUNBLFFBQUksRUFBRSxTQUFTLFNBQVM7QUFDdEIsWUFBTSxPQUFPLE1BQU0sY0FBYyxFQUFFLEtBQUtBLE1BQUssS0FBSyxNQUFNQSxNQUFLLEtBQUssQ0FBQyxFQUFFLE1BQU0sT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEVBQUU7QUFDNUcsWUFBTSxFQUFFLE9BQU8sU0FBUyxJQUFJLGNBQWMsRUFBRSxLQUFLQSxNQUFLLEtBQUssU0FBUyxPQUFPLENBQUM7QUFDNUUsWUFBTSxXQUFXLElBQUksTUFBTSxFQUFFO0FBQzdCLG1CQUFhO0FBQUEsUUFDWCxPQUFPLFFBQVEsV0FBVyxjQUFXLFFBQVEsb0JBQW9CLEVBQUU7QUFBQSxRQUNuRSxNQUFNO0FBQUEsVUFDSixHQUFHLFNBQVMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLEVBQUUsWUFBWSxNQUFNLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxVQUFVLEVBQUU7QUFBQSxVQUM5RixHQUFHLEtBQUssTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sRUFBRSxhQUFhLE1BQU0sR0FBRyxFQUFFLE1BQU0sU0FBTSxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUFBLFVBQ25ILEdBQUcsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssTUFBTSxHQUFHLEVBQUUsSUFBSSxHQUFHLE1BQU0sRUFBRSxPQUFPLE1BQU0sU0FBUyxFQUFFO0FBQUEsUUFDOUY7QUFBQSxNQUNGLENBQUM7QUFDRDtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUUsU0FBUyxPQUFPO0FBQ3BCLFVBQUksS0FBSyxFQUFHLFFBQU8sTUFBTSw0Q0FBNEM7QUFDckUsV0FBSyxVQUFVO0FBQ2YsV0FBSyxZQUFZLENBQUM7QUFDbEIsV0FBSyxZQUFZO0FBQ2pCLFdBQUssYUFBYTtBQUNsQixnQkFBVSxDQUFDLENBQUM7QUFDWixjQUFRLENBQUMsQ0FBQztBQUNWLGVBQVNLLGNBQWEsQ0FBQztBQUN2QixnQkFBVSxjQUFjLENBQUM7QUFDekIsZUFBUztBQUNULFlBQU0sYUFBYTtBQUNuQjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUUsU0FBUyxVQUFVO0FBQ3ZCLFVBQUksS0FBSyxFQUFHLFFBQU8sTUFBTSw0Q0FBNEM7QUFDckUsVUFBSSxZQUFZLFFBQVEsQ0FBQyxFQUFFLFdBQVcsRUFBRyxRQUFPLE1BQU0sdUJBQXVCO0FBQzdFLG9CQUFjLE1BQU07QUFDcEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxFQUFFLFNBQVMsU0FBUztBQUN0QixVQUFJLEtBQUssRUFBRyxRQUFPLE1BQU0sNENBQTRDO0FBQ3JFLGNBQVEsVUFBVSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzlCLGVBQVM7QUFDVCxZQUFNLHNCQUFzQjtBQUM1QjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUUsU0FBUyxVQUFXLFFBQU8sa0JBQWtCLElBQUk7QUFDdkQsUUFBSSxFQUFFLFNBQVMsUUFBUTtBQUNyQixZQUFNLFFBQVEsUUFBUTtBQUN0QixZQUFNLFVBQVUsT0FBTyxRQUFRLE1BQU0sWUFBWTtBQUNqRCxVQUFJLFFBQVEsV0FBVyxFQUFHLFFBQU8sTUFBTSxjQUFjO0FBQ3JELFlBQU0sU0FBUyxDQUFDLFlBQ2QsT0FBTyxRQUFRLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU1FLE1BQUssTUFBTSxNQUFNLGFBQWEsVUFBVUwsU0FBUSxJQUFJLEdBQUdLLE1BQUssR0FBRyxDQUFDO0FBQzlHLFlBQU0sUUFBUSxPQUFPLE1BQU0sWUFBWTtBQUN2QyxZQUFNLFNBQVMsT0FBTyxNQUFNLGtCQUFrQjtBQUM5QyxZQUFNLEVBQUUsY0FBYyxpQkFBaUIsSUFBSSxNQUFNO0FBQ2pELFlBQU0sT0FBTyxJQUFJLE1BQU0sUUFBUSxDQUFDLENBQUMsZUFBWSxhQUFhLGVBQWUsQ0FBQyxZQUFTLGlCQUFpQixlQUFlLENBQUM7QUFDcEgsWUFBTSxRQUFRLFNBQVMsT0FBVSxHQUFHLElBQUksK0JBQTRCLE9BQU8sUUFBUSxDQUFDLENBQUMsS0FBSyxJQUFJO0FBQzlGO0FBQUEsSUFDRjtBQUNBLFFBQUksRUFBRSxTQUFTLFVBQVU7QUFDdkIsWUFBTSxPQUFPQyxPQUFLLEtBQUssZUFBZSxLQUFLLElBQUksQ0FBQyxLQUFLO0FBQ3JELFlBQU1DLFlBQVUsTUFBTSxxQkFBcUIsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLHFCQUFrQixHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3BHLFlBQU0sZUFBZSxJQUFJLEVBQUU7QUFDM0I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLGlCQUFlLHVCQUF1QjtBQUNwQyxVQUFNLFNBQVMsTUFBTSxhQUFhLEVBQUUsTUFBTSxPQUFPLEVBQUUsV0FBVyxPQUFPLE9BQU8sS0FBSyxFQUFFO0FBQ25GLHFCQUFpQjtBQUFBLE1BQ2YsRUFBRSxJQUFJLFVBQVUsT0FBTyxvQ0FBaUMsV0FBVyxPQUFPLFdBQVcsT0FBTyxPQUFPLE1BQU07QUFBQSxJQUMzRyxDQUFDO0FBQUEsRUFDSDtBQUVBLFdBQVMsbUJBQW1CO0FBQzFCLHdCQUFvQixJQUFJO0FBQ3hCLHlCQUFxQjtBQUFBLEVBQ3ZCO0FBRUEsV0FBUyxnQkFBZ0IsVUFBVTtBQUNqQyxRQUFJLFNBQVMsT0FBTyxTQUFVO0FBQzlCLHdCQUFvQixLQUFLO0FBQ3pCLFVBQU0sNkNBQTZDO0FBQ25ELGtCQUFjLEVBQ1gsS0FBSyxPQUFPLEVBQUUsTUFBTSxNQUFNO0FBQ3pCLE1BQUFULE1BQUssWUFBWSxDQUFDLEdBQUcsb0JBQUksSUFBSSxDQUFDLEdBQUdBLE1BQUssV0FBVyxPQUFPLENBQUMsQ0FBQztBQUMxRCxZQUFNLFFBQVEsTUFBTSxrQkFBa0IsRUFBRSxNQUFNLE1BQU0sSUFBSTtBQUN4RCxZQUFNLFNBQVMsTUFBTSxnQkFBZ0IsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFdBQVcsTUFBTSxTQUFTLFdBQVcsRUFBRTtBQUN4RyxNQUFBQSxNQUFLLFNBQVMsQ0FBQyxHQUFHQSxNQUFLLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxhQUFhLE9BQU8sR0FBRyxHQUFHLEtBQUs7QUFDN0UsZUFBUztBQUNULFlBQU0sZ0JBQWdCLFNBQVMsc0JBQXNCLFNBQU0sTUFBTSxNQUFNLGtDQUFrQztBQUFBLElBQzNHLENBQUMsRUFDQSxNQUFNLENBQUMsUUFBUSxNQUFNLG1CQUFtQixPQUFPLElBQUksV0FBVyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFBQSxFQUN4RjtBQUVBLGlCQUFlLG1CQUFtQixVQUFVO0FBQzFDLFFBQUksU0FBUyxPQUFPLFNBQVU7QUFDOUIsVUFBTSxpQkFBaUIsRUFBRSxNQUFNLE1BQU07QUFBQSxJQUFDLENBQUM7QUFDdkMsSUFBQUEsTUFBSyxZQUFZQSxNQUFLLFVBQVUsT0FBTyxDQUFDLE1BQU0sTUFBTSxPQUFPO0FBQzNELElBQUFBLE1BQUssU0FBU0EsTUFBSyxPQUFPLElBQUksQ0FBQyxNQUFPLEVBQUUsYUFBYSxVQUFVLEVBQUUsR0FBRyxHQUFHLFdBQVcsTUFBTSxJQUFJLENBQUU7QUFDOUYsUUFBSUksT0FBTSxFQUFFLGFBQWEsUUFBUyxVQUFTQyxjQUFhLENBQUM7QUFDekQseUJBQXFCO0FBQ3JCLFVBQU0sMkJBQTJCO0FBQUEsRUFDbkM7QUFFQSxXQUFTLGdCQUFnQixZQUFZO0FBQ25DLHFCQUFpQixJQUFJO0FBQ3JCLGlCQUFhLEVBQUUsT0FBTyxjQUFjLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFDcEQsS0FBSyxDQUFDLGFBQWEsa0JBQWtCLFNBQVMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQzlGLFFBQVEsTUFBTSxpQkFBaUIsS0FBSyxDQUFDO0FBQUEsRUFDMUM7QUFFQSxXQUFTLFlBQVksTUFBTTtBQUN6QixVQUFNLE9BQU9LLFNBQVE7QUFDckIsV0FBTyxLQUFLLFdBQVcsSUFBSSxJQUFJLEtBQUssUUFBUSxNQUFNLEdBQUcsSUFBSTtBQUFBLEVBQzNEO0FBRUEsV0FBUyxtQkFBbUI7QUFDMUIsd0JBQW9CLElBQUk7QUFDeEIsdUJBQW1CLElBQUk7QUFDdkIsaUJBQWEsRUFBRSxPQUFPLGNBQWMsS0FBSyxDQUFDLEVBQ3ZDLEtBQUssQ0FBQyxVQUFVO0FBQ2YsWUFBTSxTQUFTLG9CQUFJLElBQUk7QUFDdkIsaUJBQVcsS0FBSyxPQUFPO0FBQ3JCLGNBQU0sUUFBUSxPQUFPLElBQUksRUFBRSxPQUFPLElBQUk7QUFDdEMsWUFBSSxDQUFDLE9BQU87QUFDVixpQkFBTyxJQUFJLEVBQUUsT0FBTyxNQUFNO0FBQUEsWUFDeEIsTUFBTSxFQUFFLE9BQU87QUFBQSxZQUNmLE1BQU0sWUFBWSxFQUFFLE9BQU8sSUFBSTtBQUFBLFlBQy9CLFFBQVE7QUFBQSxZQUNSLE9BQU87QUFBQSxZQUNQLFNBQVMsRUFBRSxPQUFPLFNBQVNWLE1BQUs7QUFBQSxVQUNsQyxDQUFDO0FBQUEsUUFDSCxPQUFPO0FBQ0wsZ0JBQU07QUFBQSxRQUNSO0FBQUEsTUFDRjtBQUNBLGtCQUFZLENBQUMsR0FBRyxPQUFPLE9BQU8sQ0FBQyxDQUFDO0FBQUEsSUFDbEMsQ0FBQyxFQUNBLFFBQVEsTUFBTSxtQkFBbUIsS0FBSyxDQUFDO0FBQUEsRUFDNUM7QUFFQSxpQkFBZSxjQUFjLE1BQU07QUFDakMsUUFBSSxLQUFLLEVBQUcsUUFBTyxNQUFNLDRDQUE0QztBQUNyRSxRQUFJO0FBQ0YsWUFBTSxjQUFjQSxNQUFLO0FBQ3pCLFlBQU0sT0FBTyxNQUFNQSxNQUFLLFFBQVEsS0FBSyxPQUFPLElBQUk7QUFDaEQsa0JBQVksU0FBUyxFQUFFLE1BQU0sTUFBTTtBQUFBLE1BQUMsQ0FBQztBQUNyQyxjQUFRLE1BQU0sS0FBSyxHQUFHO0FBQ3RCLGFBQU8sT0FBT0EsT0FBTSxJQUFJO0FBQ3hCLGNBQVEsT0FBTyxNQUFNLG9CQUFpQixLQUFLLEtBQUssTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU07QUFDdEUsV0FBSyxJQUFJLFdBQVc7QUFDcEIsb0JBQWMsS0FBSyxJQUFJLEtBQUssQ0FBQztBQUM3QixnQkFBVSxDQUFDLENBQUM7QUFDWixrQkFBWSxDQUFDLENBQUM7QUFDZCxZQUFNLGNBQWMsSUFBSTtBQUN4QixZQUFNLGVBQWUsS0FBSyxVQUFVLEVBQUU7QUFBQSxJQUN4QyxTQUFTLEtBQUs7QUFDWixZQUFNLGtCQUFrQixPQUFPLElBQUksV0FBVyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0FBQUEsSUFDbkU7QUFBQSxFQUNGO0FBRUEsaUJBQWUsa0JBQWtCLE1BQU07QUFDckMsUUFBSSxLQUFLLFNBQVMsT0FBTyxLQUFLLE9BQU8sSUFBSTtBQUN2QyxhQUFPLE1BQU0sa0VBQStEO0FBQUEsSUFDOUU7QUFDQSxVQUFNLFFBQVEsS0FBSztBQUNuQixRQUFJLENBQUMsU0FBUyxNQUFNLFNBQVMsS0FBSyxRQUFRLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxLQUFNO0FBQ3RFLFdBQUssWUFBWSxFQUFFLE1BQU0sS0FBSyxNQUFNLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDbkQsYUFBTyxNQUFNLDJCQUEyQixLQUFLLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQUEsSUFDcEU7QUFDQSxTQUFLLFlBQVk7QUFDakIsUUFBSTtBQUNGLFlBQU0sY0FBYyxLQUFLLElBQUk7QUFDN0Isc0JBQWdCLFlBQVksQ0FBQztBQUM3QixZQUFNLGlCQUFpQjtBQUFBLElBQ3pCLFNBQVMsS0FBSztBQUNaLFlBQU0sa0JBQWtCLE9BQU8sSUFBSSxXQUFXLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUU7QUFBQSxJQUNuRTtBQUFBLEVBQ0Y7QUFFQSxpQkFBZSxjQUFjLE1BQU07QUFDakMsdUJBQW1CLEtBQUs7QUFDeEIsd0JBQW9CLEtBQUs7QUFDekIsUUFBSSxLQUFLLE9BQU8sU0FBU0EsTUFBSyxLQUFNLFFBQU8sY0FBYyxJQUFJO0FBQzdELFFBQUk7QUFDRixZQUFNLEVBQUUsUUFBUSxPQUFPLElBQUksTUFBTSxZQUFZLEtBQUssSUFBSTtBQUN0RCxXQUFLLFVBQVUsWUFBWSxFQUFFLE1BQU0sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUN0RCxXQUFLLFlBQVksQ0FBQyxHQUFHLE1BQU07QUFDM0IsV0FBSyxZQUFZLE9BQU87QUFDeEIsV0FBSyxhQUFhO0FBQ2xCLGVBQVM7QUFDVCxZQUFNLGVBQWVFLFFBQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLFFBQVEsRUFBRSxTQUFTLEVBQUUsY0FBYyxLQUFLO0FBQzNGLFlBQU0sV0FBVyxRQUFRLEVBQUUsVUFDckIsZ0JBQWdCLFdBQVcsUUFBUSxFQUFFLE9BQU9GLE1BQUssU0FBUztBQUNoRSxVQUFJLFVBQVU7QUFDWixpQkFBUyxRQUFRO0FBQUEsTUFDbkIsT0FBTztBQUNMLGlCQUFTSyxjQUFhLENBQUM7QUFDdkIsWUFBSSxRQUFRLEVBQUUsTUFBTyxPQUFNLFNBQVMsUUFBUSxFQUFFLEtBQUssdUJBQXVCQSxjQUFhLEVBQUUsSUFBSSxFQUFFO0FBQUEsTUFDakc7QUFDQSxnQkFBVSxRQUFRLEVBQUUsV0FBVyxTQUFZLGNBQWMsSUFBSSxRQUFRLEVBQUUsTUFBTTtBQUM3RSxjQUFRLFlBQVksUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQyxHQUFHLElBQUksT0FBTyxVQUFVLEVBQUUsQ0FBQztBQUMxRixnQkFBVSxJQUFJO0FBQ2QsWUFBTSxnQkFBYSxLQUFLLEtBQUssSUFBSSxLQUFLLFVBQVUsSUFBSSxTQUFTLE9BQU8sU0FBTSxRQUFRLEtBQUssRUFBRSxDQUFDLEVBQUU7QUFBQSxJQUM5RixTQUFTLEtBQUs7QUFDWixZQUFNLGtCQUFrQixPQUFPLElBQUksV0FBVyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0FBQUEsSUFDbkU7QUFBQSxFQUNGO0FBRUEsV0FBUyxvQkFBb0I7QUFDM0IsVUFBTSxVQUFVLEtBQUs7QUFDckIsbUJBQWUsY0FBYyxPQUFPLENBQUM7QUFDckMsd0JBQW9CLElBQUk7QUFDeEIsaUJBQWEsQ0FBQztBQUFBLEVBQ2hCO0FBRUEsV0FBUyxjQUFjLE1BQU07QUFDM0IsVUFBTSxPQUFPLG9CQUFJLElBQUk7QUFDckIsVUFBTSxNQUFNLENBQUM7QUFDYixlQUFXLFNBQVMsQ0FBQyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRztBQUN6RCxVQUFJLEtBQUssSUFBSSxNQUFNLElBQUksRUFBRztBQUMxQixXQUFLLElBQUksTUFBTSxJQUFJO0FBQ25CLFVBQUksS0FBSyxLQUFLO0FBQUEsSUFDaEI7QUFDQSxXQUFPO0FBQUEsRUFDVDtBQUVBLGlCQUFlLGdCQUFnQixNQUFNO0FBQ25DLGlCQUFhLElBQUk7QUFDakIsUUFBSSxTQUFTLEVBQUcsUUFBTyxlQUFlLGNBQWMsS0FBSyxDQUFDLENBQUM7QUFDM0QsVUFBTSxVQUFVLE1BQU0sbUJBQW1CLElBQUk7QUFDN0MsUUFBSSxTQUFTLEVBQUcsUUFBTyxlQUFlLGNBQWMsQ0FBQyxHQUFHLEtBQUssR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQzVFLFVBQU0sU0FBUyxNQUFNLGtCQUFrQjtBQUN2QyxtQkFBZSxjQUFjLENBQUMsR0FBRyxLQUFLLEdBQUcsR0FBRyxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFBQSxFQUNsRTtBQUVBLGlCQUFlLGNBQWMsS0FBSztBQUNoQyxVQUFNLFNBQVMsYUFBYTtBQUM1QixVQUFNLFFBQVEsUUFBUTtBQUN0QixVQUFNLEVBQUUsTUFBTSxJQUFJLFlBQVksT0FBTyxPQUFPLEtBQUs7QUFDakQsVUFBTSxhQUFhLEdBQUcsTUFBTSxNQUFNLElBQUksTUFBTSxXQUFXLElBQUksU0FBUyxPQUFPO0FBQzNFLFFBQUksV0FBVyxDQUFDO0FBQ2hCLFFBQUksVUFBVSxDQUFDO0FBRWYsUUFBSSxJQUFJLFFBQVEsVUFBVSxJQUFJLFFBQVEsUUFBUTtBQUM1QyxZQUFNLFNBQVMsTUFBTSxZQUFZLEtBQUs7QUFDdEMsaUJBQVcsT0FBTztBQUNsQixnQkFBVSxPQUFPO0FBQUEsSUFDbkI7QUFFQSxRQUFJLGNBQWM7QUFDbEIsUUFBSSxJQUFJLFFBQVEsV0FBVztBQUN6QixZQUFNLE9BQU8sTUFBTSxXQUFXLE1BQU0sT0FBTyxLQUFLO0FBQ2hELFlBQU0sT0FBTyxLQUFLLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxJQUFJLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLElBQUk7QUFDcEYsWUFBTSxnQkFBZ0I7QUFDdEIsb0JBQWMsTUFBTSxjQUFjLEVBQUUsTUFBTSxXQUFXRCxPQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7QUFBQSxRQUFNLE1BQ3pFLEtBQUssT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssTUFBTSxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssUUFBSztBQUFBLE1BQ3pHO0FBQUEsSUFDRjtBQUVBLFVBQU0sUUFBUSxVQUFVLFVBQVUsRUFBRSxRQUFRLE9BQU8sU0FBUyxNQUFNLElBQUksS0FBSyxhQUFhLFVBQVUsUUFBUSxDQUFDO0FBQzNHLFlBQVEsS0FBSztBQUNiLFNBQUssYUFBYSxFQUFFLFVBQVUsTUFBTSxJQUFJLE9BQU8sTUFBTSxPQUFPLENBQUMsTUFBTSxTQUFTLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRTtBQUNoRyxhQUFTO0FBQ1QsUUFBSSxJQUFJLFFBQVEsT0FBUSxVQUFTLFdBQVcsTUFBTSxDQUFDO0FBRW5ELFVBQU0sY0FBYyxRQUFRLFNBQVMsaUJBQWMsUUFBUSxNQUFNLGFBQWE7QUFDOUUsUUFBSSxJQUFJLFFBQVEsT0FBUSxPQUFNLFlBQVksVUFBVSxzQkFBc0IsV0FBVyxzQkFBbUI7QUFBQSxhQUMvRixJQUFJLFFBQVEsVUFBVyxPQUFNLHlCQUF5QixXQUFXLHNCQUFtQjtBQUFBLGFBQ3BGLElBQUksUUFBUSxPQUFRLE9BQU0sWUFBWSxVQUFVLFlBQVksV0FBVyxzQkFBbUI7QUFBQSxRQUM5RixPQUFNLGdEQUE2QztBQUN4RCxrQkFBYyxJQUFJO0FBQ2xCLG9CQUFnQixJQUFJO0FBQUEsRUFDdEI7QUFFQSxpQkFBZSxhQUFhO0FBQzFCLFVBQU0sT0FBTyxLQUFLO0FBQ2xCLFFBQUksQ0FBQyxLQUFNO0FBQ1gsVUFBTSxFQUFFLFFBQVEsSUFBSSxNQUFNLGFBQWEsS0FBSyxLQUFLO0FBQ2pELFlBQVEsVUFBVSxlQUFlLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDO0FBQzdELFNBQUssYUFBYTtBQUNsQixhQUFTO0FBQ1QsVUFBTSxRQUFRLFNBQVMsc0JBQW1CLFFBQVEsTUFBTSxxQkFBcUIsZUFBZTtBQUFBLEVBQzlGO0FBRUEsV0FBUyxXQUFXLE9BQU87QUFDekIsV0FBTyxxQkFBcUIsTUFBTSxXQUFXLE1BQU0sTUFBTTtBQUFBLE1BQ3ZELGFBQWEsS0FBSztBQUFBLE1BQ2xCLFFBQVEsTUFBTSxFQUFFLEtBQUs7QUFBQSxJQUN2QixDQUFDO0FBQUEsRUFDSDtBQUVBLFFBQU0sV0FBVyxNQUNmLGVBQWUsS0FBSyxnQkFBZ0IsS0FBSyxpQkFBaUIsS0FBSyxnQkFBZ0IsS0FBSyxhQUFhLEtBQ2pHLGlCQUFpQixLQUFLLGdCQUFnQixLQUFLLGlCQUFpQixLQUFLLGlCQUFpQixLQUNsRixVQUFVLE1BQU0sUUFBUSxXQUFXLE1BQU07QUFFM0MsV0FBUyxVQUFVLE9BQU87QUFDeEIsUUFBSSxNQUFNLFdBQVcsVUFBVyxRQUFPLE1BQU0sU0FBUyxNQUFNLEVBQUUsaUJBQWlCO0FBQy9FLFVBQU0sUUFBUSxLQUFLO0FBQ25CLFFBQUksQ0FBQyxTQUFTLE1BQU0sT0FBTyxNQUFNLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLEtBQU07QUFDbkUsV0FBSyxlQUFlLEVBQUUsSUFBSSxNQUFNLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtBQUNuRCxhQUFPLE1BQU0seUJBQXlCLE1BQU0sRUFBRSxFQUFFO0FBQUEsSUFDbEQ7QUFDQSxTQUFLLGVBQWU7QUFDcEIsSUFBQUosTUFBSyxPQUFPLEtBQUssTUFBTSxJQUFJLE1BQU07QUFBQSxFQUNuQztBQUVBLFFBQU0sZ0JBQWdCLE1BQU0sQ0FBQyxDQUFDSSxPQUFNLEVBQUU7QUFFdEMsV0FBUyxpQkFBaUIsTUFBTSxFQUFFLFlBQVksTUFBTSxJQUFJLENBQUMsR0FBRztBQUMxRCxZQUFRLFVBQVUsVUFBVSxFQUFFLElBQUksS0FBSyxDQUFDLENBQUM7QUFDekMsY0FBVSxJQUFJO0FBQ2QsUUFBSSxXQUFXO0FBQ2IsdUJBQWlCLElBQUk7QUFDckIsa0JBQVksRUFBRSxlQUFlLEtBQUssQ0FBQyxFQUFFLE1BQU0sTUFBTTtBQUFBLE1BQUMsQ0FBQztBQUFBLElBQ3JEO0FBQ0EsVUFBTSxXQUFXLFFBQVEsU0FBUyxHQUFHLFlBQVksMkJBQXdCLEVBQUUsRUFBRTtBQUFBLEVBQy9FO0FBRUEsUUFBTSxLQUFLTyxVQUFTLEVBQUUsU0FBUyxRQUFRLENBQUM7QUFDeEMsS0FBRyxLQUFLLE1BQU07QUFDZCxLQUFHLEtBQUssT0FBTztBQUNmLGVBQWEsU0FBUyxLQUFLLEtBQUssTUFBTSxNQUFNO0FBQzVDLGVBQWE7QUFBQSxJQUNYLFFBQVEsQ0FBQyxTQUFTLE1BQU0sVUFBVSxLQUFLLE1BQU0sSUFBSSxLQUFLLFdBQVcsSUFBSSxjQUFjLFlBQVksRUFBRTtBQUFBLEVBQ25HLENBQUM7QUFFRCxFQUFBQyxVQUFTLENBQUMsVUFBVTtBQUNsQixRQUFJLE1BQU0sUUFBUSxZQUFZLEtBQUssS0FBSyxDQUFDLFNBQVMsR0FBRztBQUNuRCxnQkFBVTtBQUNWLFlBQU0sZ0JBQWdCO0FBQ3RCO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxLQUFLO0FBQ25DLFlBQU0sTUFBTSxLQUFLLElBQUk7QUFDckIsVUFBSSxNQUFNLEtBQUssU0FBUyxNQUFNO0FBQzVCLFFBQUFaLE1BQUssT0FBTyxRQUFRO0FBQ3BCLFlBQUksU0FBUyxFQUFFLE1BQU0sTUFBTTtBQUFBLFFBQUMsQ0FBQyxFQUFFLFFBQVEsTUFBTSxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQUEsTUFDOUQsT0FBTztBQUNMLGFBQUssU0FBUztBQUNkLGNBQU0sVUFBVUEsTUFBSyxPQUFPLFFBQVE7QUFDcEMsY0FBTSxVQUFVLEdBQUcsT0FBTyxJQUFJLFlBQVksSUFBSSxVQUFVLFFBQVEsK0NBQTRDLFlBQVksSUFBSSxPQUFPLE1BQU0sS0FBSyxzQkFBc0I7QUFBQSxNQUN0SztBQUNBLFlBQU0sZ0JBQWdCO0FBQ3RCO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxLQUFLO0FBQ25DLGlCQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEIsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxNQUFNLFFBQVEsTUFBTSxRQUFRLE9BQU8sS0FBSyxNQUFNLFVBQVUsQ0FBQyxTQUFTLEdBQUc7QUFDdkUsd0JBQWtCO0FBQ2xCLFlBQU0sZ0JBQWdCO0FBQ3RCO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxPQUFPLEtBQUssTUFBTSxVQUFVLENBQUMsU0FBUyxHQUFHO0FBQ3ZFLHlCQUFtQixJQUFJO0FBQ3ZCLHNCQUFnQixZQUFZLENBQUM7QUFDN0IsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxNQUFNLFFBQVEsTUFBTSxRQUFRLE9BQU8sS0FBSyxNQUFNLFVBQVUsQ0FBQyxTQUFTLEdBQUc7QUFDdkUsd0JBQWtCLElBQUk7QUFDdEIsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxNQUFNLFFBQVEsTUFBTSxRQUFRLE9BQU8sS0FBSyxNQUFNLFVBQVUsQ0FBQyxTQUFTLEdBQUc7QUFDdkUsdUJBQWlCO0FBQ2pCLFlBQU0sZ0JBQWdCO0FBQ3RCO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxPQUFPLEtBQUssTUFBTSxVQUFVLENBQUMsU0FBUyxHQUFHO0FBQ3ZFLFVBQUksQ0FBQyxjQUFjLEVBQUcsT0FBTSxHQUFHSSxPQUFNLEVBQUUsSUFBSSxrQ0FBa0M7QUFBQSxXQUN4RTtBQUNILGNBQU0sUUFBUSxDQUFDLE1BQU0sT0FBTyxVQUFVLFFBQVEsS0FBSztBQUNuRCxjQUFNLE9BQU8sT0FBTyxNQUFNLFFBQVEsT0FBTyxLQUFLLElBQUksSUFBSSxLQUFLLE1BQU0sTUFBTTtBQUN2RSx5QkFBaUIsSUFBSTtBQUFBLE1BQ3ZCO0FBQ0EsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxNQUFNLFFBQVEsTUFBTSxRQUFRLE9BQU8saUJBQWlCLEdBQUc7QUFDekQsdUJBQWlCLFVBQVUsSUFBSSxLQUFLLGVBQWUsTUFBTTtBQUN6RCxZQUFNLGdCQUFnQjtBQUN0QjtBQUFBLElBQ0Y7QUFDQSxRQUFJLE1BQU0sUUFBUSxNQUFNLFFBQVEsT0FBTyxnQkFBZ0IsR0FBRztBQUN4RCxZQUFNLFFBQVEsWUFBWSxJQUFJLEtBQUssY0FBYztBQUNqRCxxQkFBZSxJQUFJO0FBQ25CLHNCQUFnQixJQUFJO0FBQ3BCLFlBQU0sZ0JBQWdCO0FBQ3RCO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxPQUFPLEtBQUssY0FBYyxDQUFDLEtBQUssS0FBSyxLQUFLLE1BQU0sUUFBUTtBQUN0RixpQkFBVztBQUNYLFlBQU0sZ0JBQWdCO0FBQUEsSUFDeEI7QUFBQSxFQUNGLENBQUM7QUFFRCxRQUFNLFVBQVUsS0FBSyxJQUFJLEtBQUssSUFBSSxHQUFHLEtBQUssT0FBTyxLQUFLLElBQUksSUFBSSxVQUFVLEtBQUssR0FBSSxDQUFDLElBQUk7QUFFdEYsUUFBTSxhQUFhLE1BQU0sRUFBRSxXQUFXLEdBQUcsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7QUFDaEUsUUFBTSxlQUFlLGVBQWUsUUFBUSxDQUFDLFdBQVcsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTO0FBQ25GLFFBQU0sa0JBQWtCLENBQUMsZUFDckIsQ0FBQyxJQUNELFNBQVMsSUFDUCxTQUFTLEVBQUUsVUFDWCxZQUFZLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxZQUFZLEVBQUUsV0FBVyxXQUFXLFlBQVksQ0FBQyxDQUFDO0FBRXpGLFFBQU0sVUFBVSxNQUFNLEVBQUUsTUFBTSxzQkFBc0I7QUFDcEQsUUFBTSxZQUFZLFlBQVksUUFBUSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsS0FBSyxDQUFDLFNBQVM7QUFDdEYsTUFBSSxXQUFXO0FBQ2IsY0FBVSxHQUFHLEVBQUUsS0FBSyxDQUFDLFVBQVU7QUFDN0IsVUFBSSxVQUFVLFNBQVMsRUFBRyxhQUFZLEtBQUs7QUFBQSxJQUM3QyxDQUFDO0FBQUEsRUFDSDtBQUNBLFFBQU0sZUFBZSxZQUNqQixTQUFTLEVBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDekMsT0FBTyxDQUFDLENBQUMsS0FBSyxNQUFNLFNBQVMsQ0FBQyxFQUM5QixLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQzFCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFDbkIsQ0FBQztBQUVMLFdBQVMsU0FBUyxHQUFHO0FBQ25CLFVBQU0sSUFBSSxNQUFNO0FBQ2hCLFVBQU0sS0FBSyxFQUFFLFlBQVksR0FBRztBQUM1QixVQUFNLFlBQVksYUFBYSxDQUFDO0FBQ2hDLFVBQU0sT0FBT0ksT0FBS1IsTUFBSyxLQUFLLENBQUM7QUFDN0IsUUFBSSxhQUFhYSxZQUFXLElBQUksR0FBRztBQUNqQyxZQUFNLGNBQWMsV0FBVyxFQUFFLEtBQUssVUFBVTtBQUNoRCxXQUFLLFlBQVksSUFBSSxhQUFhLEVBQUUsTUFBTSxNQUFNLFVBQVUsQ0FBQztBQUMzRCxlQUFTLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxjQUFjLEdBQUc7QUFBQSxJQUM3QyxPQUFPO0FBQ0wsZUFBUyxFQUFFLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUc7QUFBQSxJQUN2QztBQUNBLGlCQUFhLENBQUM7QUFBQSxFQUNoQjtBQUVBLFFBQU0sVUFBVSxXQUFXLElBQUksa0JBQWtCLEVBQUUsT0FBTyxNQUFNLEdBQUcsU0FBUyxpQkFBaUIsQ0FBQyxJQUFJO0FBQ2xHLFFBQU0saUJBQWlCLENBQUMsQ0FBQyxXQUFXLFFBQVEsUUFBUSxTQUFTLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsU0FBUztBQUUzRyxRQUFNLGdCQUFnQixNQUFNLFlBQVksUUFBUSxDQUFDO0FBQ2pELFFBQU0saUJBQWlCLE1BQU07QUFDM0IsVUFBTSxTQUFTLGFBQWE7QUFDNUIsUUFBSSxDQUFDLE9BQVEsUUFBTyxDQUFDO0FBQ3JCLFVBQU0sRUFBRSxNQUFNLE1BQU0sSUFBSSxZQUFZLFFBQVEsR0FBRyxPQUFPLEtBQUs7QUFDM0QsVUFBTSxJQUFJLE1BQU07QUFDaEIsVUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLE1BQU0sSUFBSSxTQUFTLE9BQU87QUFDckQsVUFBTSxPQUFPLENBQUM7QUFDZCxRQUFJLElBQUksRUFBRyxNQUFLLEtBQUssRUFBRSxLQUFLLFFBQVEsT0FBTyxpQ0FBaUMsTUFBTSxxQ0FBa0MsVUFBVSxZQUFZLENBQUM7QUFDM0ksU0FBSyxLQUFLO0FBQUEsTUFDUixLQUFLO0FBQUEsTUFDTCxPQUFPLElBQUksSUFBSSw4QkFBOEI7QUFBQSxNQUM3QyxNQUFNLElBQUksSUFBSSx3REFBcUQsMkNBQXdDLElBQUk7QUFBQSxJQUNqSCxDQUFDO0FBQ0QsUUFBSSxJQUFJLEVBQUcsTUFBSyxLQUFLLEVBQUUsS0FBSyxRQUFRLE9BQU8scUJBQXFCLE1BQU0sMEJBQXVCLFVBQVUsWUFBWSxDQUFDO0FBQ3BILFNBQUssS0FBSyxFQUFFLEtBQUssV0FBVyxPQUFPLDZCQUE2QixNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZILFdBQU87QUFBQSxFQUNULEdBQUc7QUFFSCxRQUFNLEVBQUUsYUFBYSxNQUFNLElBQUksUUFBUTtBQUN2QyxnQkFBYztBQUNkLFFBQU0sZ0JBQWdCYixNQUFLLE9BQU8sUUFBUTtBQUMxQyxRQUFNLGlCQUFpQkEsTUFBSyxRQUFRLFFBQVE7QUFFNUMsTUFBSSxLQUFLLE1BQU0sUUFBUTtBQUNyQixXQUFPLGdCQUFBRixLQUFDLFFBQUssVUFBVSxVQUFVLFNBQVMsTUFBTSxRQUFRLE1BQU0sR0FBRztBQUFBLEVBQ25FO0FBRUEsbUJBQWlCO0FBRWpCLFFBQU0sUUFBUSxDQUFDLEdBQUcsUUFBUSxFQUFFLFlBQVksR0FBRyxRQUFRLENBQUM7QUFFcEQsU0FDRSxnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsUUFBUSxPQUFPLEdBQ3BEO0FBQUEsb0JBQUFBO0FBQUEsTUFBQ2U7QUFBQSxNQUFBO0FBQUEsUUFDQyxPQUFPLEVBQUUsVUFBVSxFQUFFO0FBQUEsUUFDckIsU0FBUyxHQUFHLEdBQUcsTUFBTTtBQUFBLFFBQ3JCLGNBQWMsT0FBTyxJQUFJLE1BQU0sT0FBTztBQUFBLFFBQ3RDLFVBQVUsQ0FBQyxNQUFNLFNBQVM7QUFBRSxvQkFBVSxDQUFDLENBQUMsTUFBTSxRQUFRO0FBQUcsb0JBQVUsSUFBSTtBQUFBLFFBQUU7QUFBQSxRQUN6RSxXQUFTO0FBQUEsUUFFUjtBQUFBLGdCQUFNLFdBQVcsS0FBSyxnQkFBQWhCLEtBQUMsVUFBTyxTQUFTRyxVQUFTLEtBQUtELE1BQUssWUFBWSxXQUFXSSxPQUFNLEVBQUUsTUFBTTtBQUFBLFVBQy9GLE1BQU0sSUFBSSxDQUFDLE1BQU0sTUFBTSxnQkFBQU4sS0FBQyxXQUFnQixNQUFZLFNBQVMsUUFBUSxLQUFoQyxDQUFtQyxDQUFFO0FBQUEsVUFDMUUsVUFBVSxNQUFNLFFBQVEsVUFBVSxNQUFNLE1BQ3ZDLGdCQUFBQSxLQUFDLFdBQXdCLE1BQU0sRUFBRSxNQUFNLGFBQWEsTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFJLEtBQS9ELFdBQWtFO0FBQUE7QUFBQTtBQUFBLElBRW5GO0FBQUEsSUFFQyxPQUFPLEVBQUUsU0FBUyxLQUNqQixnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUM5RCxpQkFBTyxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQ2hCLGdCQUFBQyxNQUFDLFNBQVksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUN6QztBQUFBLHNCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLHFCQUFLO0FBQUEsTUFDckMsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxHQUFHLFFBQVEsRUFBRSxHQUNuQywwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxNQUFNLEdBQUksWUFBRSxRQUFRLE9BQU8sR0FBRyxHQUFFLEdBQzlFO0FBQUEsTUFDQyxNQUFNLEtBQUssZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEtBQUssS0FBSyxHQUFJLDJDQUF3QjtBQUFBLFNBTHZFLENBTVYsQ0FDRCxHQUNIO0FBQUEsSUFHRixnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxJQUFJLFVBQVUsZUFBZSxPQUFPLFVBQVUsR0FBRyxVQUFVLEdBQUcsV0FBVyxFQUFFLEdBQ3ZGO0FBQUEsc0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEdBQUcsTUFBTSxLQUFLLEdBQUksb0JBQUk7QUFBQSxNQUNuRCxnQkFBQUEsS0FBQyxVQUFLLGVBQUM7QUFBQSxNQUNOLFFBQVEsRUFBRSxTQUNULGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsWUFBWSxLQUFLLEdBQUcsT0FBTyxFQUFFLEdBQ25ELDBCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLElBQUksT0FBTyxHQUFHLE9BQU8sU0FBUyxNQUFNLEtBQUssR0FBSSxjQUFJLFFBQVEsRUFBRSxLQUFLLEtBQUksR0FDckY7QUFBQSxNQUVGLGdCQUFBQTtBQUFBLFFBQUM7QUFBQTtBQUFBLFVBQ0MsT0FBTyxNQUFNO0FBQUEsVUFDYixVQUFVLENBQUMsTUFBTTtBQUNmLGtCQUFNLFlBQVkseUJBQXlCLEdBQUc7QUFBQSxjQUM1QyxhQUFhLEtBQUs7QUFBQSxjQUNsQixRQUFRLE1BQU0sRUFBRSxLQUFLO0FBQUEsWUFDdkIsQ0FBQztBQUNELHFCQUFTLFVBQVUsSUFBSTtBQUN2Qix3QkFBWSxDQUFDO0FBQ2Isd0JBQVksSUFBSTtBQUNoQix5QkFBYSxDQUFDO0FBQ2QsdUJBQVcsRUFBRTtBQUNiLDhCQUFrQixLQUFLO0FBQUEsVUFDekI7QUFBQSxVQUNBLFVBQVUsTUFBTTtBQUFFLGdCQUFJLEtBQUssRUFBRyxXQUFVO0FBQUEsaUJBQVE7QUFBRSx1QkFBUyxFQUFFO0FBQUcsMEJBQVksSUFBSTtBQUFBLFlBQUU7QUFBQSxVQUFFO0FBQUEsVUFDcEYsVUFBVTtBQUFBLFVBQ1YsV0FBVyxDQUFDLE1BQU07QUFDaEIsZ0JBQUksRUFBRSxRQUFRLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLFFBQVEsZ0JBQWdCLGdCQUFnQixTQUFTLEdBQUc7QUFDdkYsb0JBQU0sUUFBUSxTQUFTO0FBQ3ZCLGtCQUFJLENBQUMsT0FBTztBQUNWLHNCQUFNLFFBQVEsS0FBSyxJQUFJLFNBQVMsR0FBRyxnQkFBZ0IsU0FBUyxDQUFDO0FBQzdELDRCQUFZLEVBQUUsU0FBUyxnQkFBZ0IsQ0FBQztBQUN4Qyw0QkFBWSxLQUFLO0FBQ2pCLHlCQUFTLE1BQU0sZ0JBQWdCLEtBQUssRUFBRSxJQUFJO0FBQUEsY0FDNUMsT0FBTztBQUNMLHNCQUFNLFFBQVEsU0FBUyxJQUFJLEtBQUssTUFBTSxRQUFRO0FBQzlDLDRCQUFZLElBQUk7QUFDaEIseUJBQVMsTUFBTSxNQUFNLFFBQVEsSUFBSSxFQUFFLElBQUk7QUFBQSxjQUN6QztBQUNBLHFCQUFPO0FBQUEsWUFDVDtBQUNBLGdCQUFJLEVBQUUsUUFBUSxXQUFXLEVBQUUsTUFBTTtBQUMvQixvQkFBTSxRQUFRLGtCQUFrQixFQUFFLElBQUk7QUFDdEMsa0JBQUksTUFBTSxTQUFTLEdBQUc7QUFDcEIsc0JBQU0sZUFBZSxNQUFNLElBQUksQ0FBQyxTQUFTO0FBQ3ZDLHdCQUFNLGNBQWMsV0FBVyxFQUFFLEtBQUssVUFBVTtBQUNoRCx1QkFBSyxZQUFZLElBQUksYUFBYSxFQUFFLE1BQU0sV0FBVyxhQUFhLElBQUksRUFBRSxDQUFDO0FBQ3pFLHlCQUFPO0FBQUEsZ0JBQ1QsQ0FBQztBQUNELHNCQUFNLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTTtBQUMvQix5QkFBUyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxhQUFhLEtBQUssR0FBRyxJQUFJLEVBQUUsTUFBTSxNQUFNLEVBQUUsQ0FBQztBQUMxRSx1QkFBTztBQUFBLGNBQ1Q7QUFDQSxxQkFBTztBQUFBLFlBQ1Q7QUFDQSxnQkFBSSxFQUFFLFFBQVEsZUFBZSxFQUFFLFNBQVMsR0FBRztBQUN6QyxvQkFBTSxRQUFRLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUI7QUFDaEUsa0JBQUksT0FBTztBQUNULHFCQUFLLFlBQVksT0FBTyxNQUFNLENBQUMsQ0FBQztBQUNoQyx5QkFBUyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsU0FBUyxNQUFNLENBQUMsRUFBRSxNQUFNLElBQUksRUFBRSxNQUFNLE1BQU0sRUFBRSxNQUFNLENBQUM7QUFDL0UsdUJBQU87QUFBQSxjQUNUO0FBQUEsWUFDRjtBQUNBLGdCQUFJLEVBQUUsUUFBUSxTQUFTLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxNQUFNO0FBQ3pDLG9CQUFNLE1BQU0sa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE9BQU8sU0FBUyxpQkFBaUIsQ0FBQztBQUMzRSxrQkFBSSxDQUFDLElBQUssUUFBTztBQUNqQixrQkFBSSxDQUFDLFdBQVcsR0FBRztBQUNqQiw4QkFBYyxJQUFJO0FBQ2xCLDZCQUFhLENBQUM7QUFDZCwwQkFBVSxHQUFHLEVBQUUsS0FBSyxDQUFDLFVBQVU7QUFDN0Isc0JBQUksVUFBVSxTQUFTLEVBQUcsYUFBWSxLQUFLO0FBQUEsZ0JBQzdDLENBQUM7QUFBQSxjQUNILFdBQVcsSUFBSSxRQUFRLFNBQVMsR0FBRztBQUNqQyxpQ0FBaUIsRUFBRSxPQUFPLEtBQUssSUFBSSxRQUFRLEtBQUssSUFBSSxVQUFVLEdBQUcsSUFBSSxRQUFRLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFBQSxjQUMzRjtBQUNBLHFCQUFPO0FBQUEsWUFDVDtBQUNBLGdCQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsZ0JBQWdCLFVBQVcsUUFBTztBQUMxRCxnQkFBSSxFQUFFLFFBQVEsUUFBUSxFQUFFLFVBQVUsTUFBTSxPQUFPLEVBQUUsU0FBUyxHQUFHO0FBQzNELHVCQUFTLE9BQU8sRUFBRSxLQUFLLElBQUksQ0FBQztBQUM1Qix3QkFBVSxDQUFDLENBQUM7QUFDWixxQkFBTztBQUFBLFlBQ1Q7QUFDQSxrQkFBTSxXQUFXLFFBQVEsS0FBSztBQUM5QixnQkFBSSxFQUFFLFFBQVEsU0FBUyxZQUFZLEVBQUUsVUFBVSxPQUFPLFFBQVEsSUFBSSxLQUFLLEVBQUUsU0FBUyxHQUFHO0FBQ25GLG9CQUFNLElBQUksUUFBUSxJQUFJO0FBQ3RCLHlCQUFXLENBQUM7QUFDWix1QkFBUyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsSUFBSSxDQUFDLEVBQUUsSUFBSTtBQUMzQyxxQkFBTztBQUFBLFlBQ1Q7QUFDQSxnQkFBSSxFQUFFLFFBQVEsVUFBVSxVQUFVO0FBQ2hDLG9CQUFNLElBQUksUUFBUSxJQUFJO0FBQ3RCLHlCQUFXLENBQUM7QUFDWix1QkFBUyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsSUFBSSxDQUFDLEVBQUUsSUFBSTtBQUN4RCxxQkFBTztBQUFBLFlBQ1Q7QUFDQSxtQkFBTztBQUFBLFVBQ1Q7QUFBQSxVQUNBLGVBQWE7QUFBQSxVQUNiLGVBQWE7QUFBQSxVQUNiLFNBQVMsR0FBRyxHQUFHLE9BQU8sS0FBSyxDQUFDLFNBQVM7QUFBQSxVQUNyQyxXQUFXO0FBQUEsVUFDWCxhQUFZO0FBQUEsVUFDWixRQUFRLEVBQUUsT0FBTyxNQUFNLElBQUksT0FBTyxHQUFHLE9BQU8sUUFBUTtBQUFBO0FBQUEsTUFDdEQ7QUFBQSxPQUNGO0FBQUEsSUFFQyxnQkFDQyxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUM5RCwwQkFBZ0IsV0FBVyxJQUMxQixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyxrQ0FBb0IsSUFFbkQsZ0JBQUFBO0FBQUEsTUFBQ2lCO0FBQUEsTUFBQTtBQUFBLFFBQ0MsU0FBTztBQUFBLFFBQ1AsT0FBTztBQUFBLFFBQ1AsVUFBVSxTQUFTO0FBQUEsUUFDbkIsVUFBVTtBQUFBLFFBQ1YsVUFBVSxDQUFDLE1BQU0sV0FBVyxDQUFDO0FBQUEsUUFDN0IsU0FBUztBQUFBLFFBQ1QsWUFBWTtBQUFBLFFBQ1osV0FBVztBQUFBLFFBQ1gsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLE1BQ3ZCLGdCQUFBaEIsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSwwQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLG1CQUFTLFlBQU8sTUFBSztBQUFBLFVBQ3hELGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPLElBQUksTUFBTSxHQUFJLGNBQUksRUFBRSxJQUFJLEdBQUcsT0FBTyxFQUFFLEdBQUU7QUFBQSxVQUM1RSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsWUFBWSxNQUFNLEdBQUksWUFBRSxNQUFLO0FBQUEsV0FDOUQ7QUFBQTtBQUFBLElBRUosR0FFSjtBQUFBLElBR0QsYUFBYSxhQUFhLFNBQVMsS0FDbEMsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFVBQVUsR0FBRyxXQUFXLEVBQUUsR0FDL0QsMEJBQUFBO0FBQUEsTUFBQ2lCO0FBQUEsTUFBQTtBQUFBLFFBQ0MsU0FBTztBQUFBLFFBQ1AsT0FBTztBQUFBLFFBQ1AsVUFBVSxVQUFVO0FBQUEsUUFDcEIsVUFBVTtBQUFBLFFBQ1YsVUFBVTtBQUFBLFFBQ1YsVUFBVSxNQUFNLGtCQUFrQixJQUFJO0FBQUEsUUFDdEMsU0FBUztBQUFBLFFBQ1QsWUFBWTtBQUFBLFFBQ1osV0FBVztBQUFBLFFBQ1gsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLE1BQ3ZCLGdCQUFBaEIsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSwwQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLG1CQUFTLFlBQU8sTUFBSztBQUFBLFVBQ3hELGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPLElBQUksUUFBUSxHQUFJLGFBQUU7QUFBQSxXQUMxRDtBQUFBO0FBQUEsSUFFSixHQUNGO0FBQUEsSUFHRCxrQkFDQyxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUMvRCwwQkFBQUE7QUFBQSxNQUFDaUI7QUFBQSxNQUFBO0FBQUEsUUFDQyxTQUFPO0FBQUEsUUFDUCxPQUFPLFFBQVE7QUFBQSxRQUNmLFVBQVUsVUFBVTtBQUFBLFFBQ3BCLFVBQVU7QUFBQSxRQUNWLFVBQVUsQ0FBQyxjQUFjLGlCQUFpQixNQUFNLEdBQUcsU0FBUyxTQUFTO0FBQUEsUUFDckUsVUFBVTtBQUFBLFFBQ1YsU0FBUztBQUFBLFFBQ1QsWUFBWTtBQUFBLFFBQ1osV0FBVztBQUFBLFFBQ1gsWUFBWSxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQy9CLGdCQUFBaEIsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSwwQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLG1CQUFTLFlBQU8sTUFBSztBQUFBLFVBQ3hELGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPLElBQUksUUFBUSxHQUFJLHFCQUFVO0FBQUEsV0FDbEU7QUFBQTtBQUFBLElBRUosR0FDRjtBQUFBLElBR0QsZUFBZSxLQUNkLGdCQUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsUUFBUUk7QUFBQSxRQUNSLFNBQVNFLE9BQU0sRUFBRTtBQUFBLFFBQ2pCLGFBQWFDLGNBQWEsRUFBRTtBQUFBLFFBQzVCLFNBQVMsZUFBZTtBQUFBLFFBQ3hCLFFBQVEsQ0FBQyxNQUFNO0FBQ2IsY0FBSSxFQUFFLGNBQWMsTUFBTyxRQUFPLE1BQU0sT0FBTyxFQUFFLE9BQU8sK0JBQStCLEVBQUUsSUFBSSxFQUFFO0FBQy9GLGtCQUFRLFVBQVUsZ0JBQWdCLEVBQUUsTUFBTUQsT0FBTSxFQUFFLE1BQU0sSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JFLG1CQUFTLENBQUM7QUFDViw0QkFBa0IsS0FBSztBQUN2QixnQkFBTSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUU7QUFBQSxRQUNoQztBQUFBLFFBQ0EsZUFBZSxDQUFDLE1BQU07QUFDcEIsY0FBSSxFQUFFLGNBQWMsTUFBTyxRQUFPLE1BQU0sT0FBTyxFQUFFLE9BQU8sK0JBQStCLEVBQUUsSUFBSSxFQUFFO0FBQy9GLGtCQUFRLFVBQVUsZ0JBQWdCLEVBQUUsTUFBTUEsT0FBTSxFQUFFLE1BQU0sSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JFLG1CQUFTLENBQUM7QUFDViwwQkFBZ0IsQ0FBQztBQUNqQixzQkFBWSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLE1BQU07QUFBQSxVQUFDLENBQUM7QUFDcEQsNEJBQWtCLEtBQUs7QUFDdkIsZ0JBQU0sZ0JBQWdCLEVBQUUsSUFBSSx3QkFBcUI7QUFBQSxRQUNuRDtBQUFBLFFBQ0EsU0FBUyxNQUFNLGtCQUFrQixLQUFLO0FBQUE7QUFBQSxJQUN4QztBQUFBLElBR0QsZ0JBQWdCLEtBQ2YsZ0JBQUFOO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxRQUFRO0FBQUEsUUFDUixTQUFTLE9BQU8sS0FBSztBQUFBLFFBQ3JCLGNBQWMsY0FBYyxLQUFLO0FBQUEsUUFDakMsU0FBUyxnQkFBZ0I7QUFBQSxRQUN6QixRQUFRLENBQUMsTUFBTTtBQUNiLDJCQUFpQixFQUFFLEdBQUc7QUFDdEIsNkJBQW1CLEtBQUs7QUFBQSxRQUMxQjtBQUFBLFFBQ0EsZUFBZSxDQUFDLE1BQU07QUFDcEIsMkJBQWlCLEVBQUUsS0FBSyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQzNDLDZCQUFtQixLQUFLO0FBQUEsUUFDMUI7QUFBQSxRQUNBLFNBQVMsTUFBTSxtQkFBbUIsS0FBSztBQUFBO0FBQUEsSUFDekM7QUFBQSxJQUdELGlCQUFpQixLQUNoQixnQkFBQUE7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLFNBQVMsWUFBWTtBQUFBLFFBQ3JCLFFBQVE7QUFBQSxRQUNSLFlBQVksVUFBVTtBQUFBLFFBQ3RCLFNBQVMsaUJBQWlCO0FBQUEsUUFDMUIsUUFBUSxDQUFDLFNBQVM7QUFBRSxtQkFBUyxJQUFJO0FBQUcsOEJBQW9CLEtBQUs7QUFBQSxRQUFFO0FBQUEsUUFDL0QsU0FBUyxNQUFNLG9CQUFvQixLQUFLO0FBQUE7QUFBQSxJQUMxQztBQUFBLElBR0QsZ0JBQWdCLEtBQ2YsZ0JBQUFBO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxVQUFVLGVBQWU7QUFBQSxRQUN6QixRQUFRO0FBQUEsUUFDUixZQUFZLFlBQVk7QUFBQSxRQUN4QixTQUFTLGNBQWM7QUFBQSxRQUN2QixTQUFTLGdCQUFnQjtBQUFBLFFBQ3pCLFFBQVE7QUFBQSxRQUNSLFVBQVU7QUFBQSxRQUNWLFNBQVMsTUFBTSxtQkFBbUIsS0FBSztBQUFBO0FBQUEsSUFDekM7QUFBQSxJQUdELFVBQVUsS0FDVCxnQkFBQUE7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLE9BQU8sVUFBVSxFQUFFO0FBQUEsUUFDbkIsTUFBTSxVQUFVLEVBQUU7QUFBQSxRQUNsQixTQUFTLFVBQVUsTUFBTTtBQUFBLFFBQ3pCLFNBQVMsTUFBTSxhQUFhLElBQUk7QUFBQTtBQUFBLElBQ2xDO0FBQUEsSUFHRCxpQkFBaUIsS0FDaEIsZ0JBQUFBO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxVQUFVLFNBQVM7QUFBQSxRQUNuQixTQUFTLGdCQUFnQjtBQUFBLFFBQ3pCLFNBQVMsaUJBQWlCO0FBQUEsUUFDMUIsUUFBUSxDQUFDLE1BQU0sY0FBYyxFQUFFLE1BQU07QUFBQSxRQUNyQyxTQUFTLE1BQU0sb0JBQW9CLEtBQUs7QUFBQTtBQUFBLElBQzFDO0FBQUEsSUFHRCxnQkFBZ0IsS0FDZixnQkFBQUE7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLFNBQVMsY0FBYztBQUFBLFFBQ3ZCLFFBQVFFLE1BQUssT0FBTyxLQUFLO0FBQUEsUUFDekIsWUFBWSxDQUFDLE9BQU87QUFDbEIsY0FBSTtBQUNGLG1CQUFPQSxNQUFLLE9BQU8sT0FBTyxJQUFJLEVBQUUsTUFBTSxJQUFLLENBQUM7QUFBQSxVQUM5QyxRQUFRO0FBQ04sbUJBQU87QUFBQSxVQUNUO0FBQUEsUUFDRjtBQUFBLFFBQ0EsU0FBUyxnQkFBZ0I7QUFBQSxRQUN6QixRQUFRO0FBQUEsUUFDUixXQUFXLENBQUMsTUFBTUEsTUFBSyxPQUFPLFFBQVEsRUFBRSxFQUFFO0FBQUEsUUFDMUMsU0FBUyxNQUFNLG1CQUFtQixLQUFLO0FBQUE7QUFBQSxJQUN6QztBQUFBLElBR0QsaUJBQWlCLEtBQ2hCLGdCQUFBRjtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsV0FBVyxjQUFjO0FBQUEsUUFDekIsU0FBUyxpQkFBaUI7QUFBQSxRQUMxQixXQUFXO0FBQUEsUUFDWCxjQUFjO0FBQUEsUUFDZCxTQUFTLE1BQU0sb0JBQW9CLEtBQUs7QUFBQTtBQUFBLElBQzFDO0FBQUEsSUFHRCxpQkFBaUIsS0FDaEIsZ0JBQUFBO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxVQUFVLGNBQWMsR0FBR0UsTUFBSyxRQUFRLEtBQUs7QUFBQSxRQUM3QyxTQUFTLGlCQUFpQjtBQUFBLFFBQzFCLFVBQVUsQ0FBQyxNQUFNO0FBQ2YsVUFBQUEsTUFBSyxRQUFRLE9BQU8sRUFBRSxFQUFFO0FBQ3hCLGdCQUFNLHFCQUFxQixFQUFFLEVBQUUsRUFBRTtBQUNqQztBQUFBLFlBQ0UsOERBQThELEVBQUUsRUFBRSxlQUFlLEVBQUUsS0FBSyxRQUFRLE9BQU8sR0FBRyxDQUFDO0FBQUEsWUFDM0csRUFBRSxNQUFNLE1BQU07QUFBQSxVQUNoQjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLFNBQVMsTUFBTSxvQkFBb0IsS0FBSztBQUFBO0FBQUEsSUFDMUM7QUFBQSxJQUdELGFBQWEsS0FDWixnQkFBQUY7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLFNBQVMsV0FBVztBQUFBLFFBQ3BCLFNBQVMsYUFBYTtBQUFBLFFBQ3RCLFVBQVUsQ0FBQyxTQUFTLElBQUksT0FBTyxJQUFJO0FBQUEsUUFDbkMsYUFBYSxDQUFDLFNBQVMsSUFBSSxVQUFVLElBQUk7QUFBQSxRQUN6QyxVQUFVLENBQUMsU0FBUyxJQUFJLE9BQU8sSUFBSTtBQUFBLFFBQ25DLE9BQU8sQ0FBQyxNQUFNLFNBQVNrQixXQUFVO0FBQy9CLGNBQUksSUFBSSxNQUFNLFNBQVNBLE1BQUs7QUFDNUIsZ0JBQU0sU0FBUyxJQUFJLEtBQUtBLE1BQUssR0FBRztBQUFBLFFBQ2xDO0FBQUEsUUFDQSxXQUFXO0FBQUEsUUFDWCxTQUFTLE1BQU0sZ0JBQWdCLEtBQUs7QUFBQTtBQUFBLElBQ3RDO0FBQUEsSUFHRCxXQUFXLE1BQU0sVUFDaEIsZ0JBQUFsQjtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsU0FBUyxDQUFDLEdBQUcsY0FBYyxDQUFDLEVBQUUsUUFBUTtBQUFBLFFBQ3RDLE9BQU8sQ0FBQyxVQUFVLFlBQVksUUFBUSxHQUFHLEtBQUs7QUFBQSxRQUM5QyxTQUFTLFdBQVcsTUFBTTtBQUFBLFFBQzFCLFFBQVEsQ0FBQyxVQUFVO0FBQUUsMEJBQWdCLEtBQUs7QUFBRyx3QkFBYyxRQUFRO0FBQUEsUUFBRTtBQUFBLFFBQ3JFLFNBQVMsTUFBTSxjQUFjLElBQUk7QUFBQTtBQUFBLElBQ25DO0FBQUEsSUFHRCxXQUFXLE1BQU0sWUFBWSxhQUFhLEtBQ3pDLGdCQUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsUUFBUSxhQUFhO0FBQUEsUUFDckIsU0FBUztBQUFBLFFBQ1QsU0FBUyxXQUFXLE1BQU07QUFBQSxRQUMxQixVQUFVO0FBQUEsUUFDVixRQUFRLE1BQU0sY0FBYyxNQUFNO0FBQUE7QUFBQSxJQUNwQztBQUFBLElBR0YsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLFVBQVUsR0FBRyxLQUFLLEdBQUcsV0FBVyxFQUFFLEdBQ25FO0FBQUEsV0FBSyxJQUVGLGdCQUFBQSxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLHdCQUFBRCxLQUFDLFdBQVEsT0FBTyxPQUFPLEdBQUcsV0FBVSxTQUFRLFVBQVUsTUFBTSxTQUFPLE1BQUUscUJBQVcsSUFBSSxlQUFlLFlBQVksSUFBSSxhQUFhLGNBQWE7QUFBQSxRQUM3SSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxlQUFLLE9BQU8sNEJBQXdCO0FBQUEsU0FDdEUsSUFFQSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sVUFBVSxXQUFXLEdBQUksVUFBQUUsTUFBSyxZQUFXO0FBQUEsTUFDMUUsZ0JBQUFGLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxNQUM1QixnQkFBZ0IsS0FBSyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxvQkFBSyxhQUFhLElBQUc7QUFBQSxNQUMxRSxpQkFBaUIsS0FBSyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxvQkFBSyxjQUFjLElBQUc7QUFBQSxNQUM3RSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLFVBQUFNLE9BQU0sRUFBRSxNQUFLO0FBQUEsTUFDL0MsY0FBYyxLQUFLLE9BQU8sS0FBSyxnQkFBQU4sS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxrQkFBSyxPQUFPLENBQUMsSUFBRztBQUFBLE1BQ2hGLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLG9CQUFDO0FBQUEsTUFDaEMsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksYUFBRyxNQUFNLGFBQWEsZUFBZSxDQUFDLE9BQU07QUFBQSxNQUM1RSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyxvQkFBQztBQUFBLE1BQ2hDLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGFBQUcsTUFBTSxpQkFBaUIsZUFBZSxDQUFDLFFBQU87QUFBQSxNQUNoRixNQUFNLGdCQUFnQixLQUFLLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLG9CQUFLLE1BQU0sY0FBYyxlQUFlLENBQUMsVUFBUztBQUFBLE1BQzdHTSxPQUFNLEVBQUUsVUFBVSxLQUFLLFFBQVEsRUFBRSxtQkFBbUIsS0FBSyxRQUFRLEVBQUUsb0JBQW9CQSxPQUFNLEVBQUUsU0FBUyxNQUFNO0FBQzdHLGNBQU0sTUFBTSxLQUFLLElBQUksS0FBSyxLQUFLLE1BQU8sUUFBUSxFQUFFLG1CQUFtQkEsT0FBTSxFQUFFLFVBQVcsR0FBRyxDQUFDO0FBQzFGLGVBQU8sZ0JBQUFOLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEtBQUssTUFBTSxNQUFNLEdBQUksaUJBQU8sR0FBRyxLQUFJO0FBQUEsTUFDekUsR0FBRztBQUFBLE9BQ0w7QUFBQSxLQUNGO0FBRUo7OztBSDEwQ3dCLGdCQUFBbUIsWUFBQTtBQTNHeEIsSUFBTSxNQUFNLEtBQUssTUFBTUMsY0FBYSxJQUFJLElBQUksbUJBQW1CLFlBQVksR0FBRyxHQUFHLE9BQU8sQ0FBQztBQUV6RixJQUFJO0FBQ0osSUFBSTtBQUNGLFFBQU0sVUFBVSxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUM7QUFDdkMsU0FBUyxLQUFLO0FBQ1osVUFBUSxNQUFNLFNBQVMsSUFBSSxPQUFPLEVBQUU7QUFDcEMsVUFBUSxNQUFNLEtBQUs7QUFDbkIsVUFBUSxLQUFLLENBQUM7QUFDaEI7QUFDQSxJQUFJLElBQUksU0FBUyxRQUFRO0FBQ3ZCLFVBQVEsSUFBSSxLQUFLO0FBQ2pCLFVBQVEsS0FBSyxDQUFDO0FBQ2hCO0FBQ0EsSUFBSSxJQUFJLFNBQVMsV0FBVztBQUMxQixVQUFRLElBQUksSUFBSSxPQUFPO0FBQ3ZCLFVBQVEsS0FBSyxDQUFDO0FBQ2hCO0FBQ0EsSUFBSSxJQUFJLFNBQVMsV0FBVztBQUMxQixRQUFNLEVBQUUsZUFBQUMsZUFBYyxJQUFJLE1BQU07QUFDaEMsTUFBSTtBQUNGLFlBQVEsTUFBTSw2Q0FBNkM7QUFDM0QsVUFBTSxFQUFFLE1BQU0sSUFBSSxNQUFNQSxlQUFjLEVBQUUsT0FBTyxDQUFDLFFBQVEsUUFBUSxNQUFNO0FBQUEsRUFBd0MsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUN0SCxZQUFRLElBQUksZ0JBQWdCLFNBQVMsc0JBQXNCLEVBQUU7QUFDN0QsWUFBUSxLQUFLLENBQUM7QUFBQSxFQUNoQixTQUFTLEtBQUs7QUFDWixZQUFRLE1BQU0sbUJBQW1CLElBQUksT0FBTyxFQUFFO0FBQzlDLFlBQVEsS0FBSyxDQUFDO0FBQUEsRUFDaEI7QUFDRjtBQUNBLElBQUksSUFBSSxTQUFTLFlBQVk7QUFDM0IsUUFBTSxFQUFFLGFBQUFDLGFBQVksSUFBSSxNQUFNO0FBQzlCLFVBQVEsS0FBSyxNQUFNQSxhQUFZLEdBQUcsQ0FBQztBQUNyQztBQUVBLElBQU0sT0FBTyxhQUFhO0FBQzFCLElBQU0sVUFBVSxNQUFNLGdCQUFnQjtBQUN0QyxJQUFNLFlBQVksQ0FBQyxHQUFHLFVBQVUsSUFBSSxHQUFHLEdBQUksVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUU7QUFDcEUsSUFBTSxjQUFjLE1BQU0sWUFBWTtBQUN0QyxJQUFNLGFBQWEsVUFBVSxNQUFNLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUk7QUFDM0UsSUFBTSxTQUFTO0FBQUEsRUFDYixHQUFHLGNBQWMsYUFBYSxDQUFDLFVBQVUsYUFBYSxVQUFVLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPO0FBQUEsSUFDbEYsR0FBRztBQUFBLElBQ0gsV0FBVyxVQUFVLFNBQVMsRUFBRSxRQUFRO0FBQUEsSUFDeEMsU0FBUyxRQUFRLEVBQUUsUUFBUTtBQUFBLEVBQzdCLEVBQUU7QUFBQSxFQUNGLElBQUksTUFBTSxnQkFBZ0IsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPO0FBQUEsSUFDakQsR0FBRztBQUFBLElBQ0gsU0FBUyxFQUFFLFdBQ04sWUFBWSxRQUFRLFNBQVMsRUFBRSxLQUFLLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLE9BQU8sU0FDM0QsWUFBWSxRQUFRLFNBQVMsRUFBRSxLQUFLLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLE9BQU8sV0FDM0Q7QUFBQSxJQUNMLFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxFQUNYLEVBQUU7QUFDSjtBQUVBLElBQUksVUFBVSxXQUFXLEdBQUc7QUFDMUIsVUFBUSxNQUFNLDZCQUE2QjtBQUMzQyxVQUFRLE1BQU0sNEVBQTRFO0FBQzFGLFVBQVEsTUFBTSxnREFBZ0Q7QUFDOUQsVUFBUSxLQUFLLENBQUM7QUFDaEI7QUFFQSxJQUFJLFlBQVksTUFBTTtBQUFDO0FBQ3ZCLElBQUksZUFBZSxNQUFNO0FBQUM7QUFDMUIsSUFBSSxhQUFhLE1BQU07QUFBQztBQUN4QixJQUFNLFNBQVMsbUJBQW1CO0FBQUEsRUFDaEMsVUFBVSxNQUFNLGFBQWE7QUFBQSxFQUM3QixRQUFRLENBQUMsVUFBVSxXQUFXLEtBQUs7QUFDckMsQ0FBQztBQUNELFFBQVEsR0FBRyxRQUFRLE1BQU0sT0FBTyxRQUFRLENBQUM7QUFFekMsSUFBSSxnQkFBZ0IsTUFBTTtBQUFDO0FBQzNCLElBQUksY0FBYyxNQUFNO0FBQUM7QUFDekIsSUFBTSxVQUFVLG9CQUFvQjtBQUFBLEVBQ2xDLFVBQVUsTUFBTSxjQUFjO0FBQUEsRUFDOUIsUUFBUSxDQUFDLFdBQVcsWUFBWSxNQUFNO0FBQ3hDLENBQUM7QUFFRCxJQUFNLGNBQWMsQ0FBQyxRQUFRLGlCQUFpQixLQUFLLEVBQUUsYUFBYSxNQUFNLFVBQVUsRUFBRSxDQUFDO0FBRXJGLElBQU0sU0FBUyxNQUFNLFdBQVc7QUFDaEMsSUFBTSxvQkFBb0IsT0FBTyxnQkFBZ0IsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsT0FBTyxZQUFZO0FBRWxHLElBQU0sUUFBUSxFQUFFLFFBQVEsZUFBZTtBQUV2QyxJQUFNLE9BQU87QUFBQSxFQUNYLEdBQUksTUFBTSxZQUFZLFFBQVEsSUFBSSxDQUFDO0FBQUEsRUFDbkM7QUFBQSxFQUNBLFNBQVMsSUFBSTtBQUFBLEVBQ2I7QUFBQSxFQUNBO0FBQUEsRUFDQSxjQUFjLHFCQUFxQixhQUFhLE1BQU07QUFBQSxFQUN0RCxlQUFlLENBQUMsT0FBTyxVQUFVLFFBQVEsS0FBSyxFQUFFLFNBQVMsT0FBTyxhQUFhLElBQUksT0FBTyxnQkFBZ0I7QUFBQSxFQUN4RyxhQUFhLE9BQU8sZ0JBQWdCO0FBQUEsRUFDcEMsTUFBTSxDQUFDO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxFQUNBLGNBQWMsQ0FBQyxPQUFPO0FBQUUsZ0JBQVk7QUFBQSxFQUFHO0FBQUEsRUFDdkMsaUJBQWlCLENBQUMsT0FBTztBQUFFLG1CQUFlO0FBQUEsRUFBRztBQUFBLEVBQzdDLGVBQWUsQ0FBQyxPQUFPO0FBQUUsaUJBQWE7QUFBQSxFQUFHO0FBQUEsRUFDekMsa0JBQWtCLENBQUMsT0FBTztBQUFFLG9CQUFnQjtBQUFBLEVBQUc7QUFBQSxFQUMvQyxnQkFBZ0IsQ0FBQyxPQUFPO0FBQUUsa0JBQWM7QUFBQSxFQUFHO0FBQUEsRUFDM0MsU0FBUztBQUNYO0FBRUEsSUFBTSxNQUFNLE1BQU0sTUFBTSxnQkFBQUgsS0FBQyxPQUFJLE1BQVksR0FBSSxFQUFFLE9BQU8sYUFBVSxLQUFLLEtBQUssTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDO0FBQ3JHLEtBQUssV0FBVyxJQUFJO0FBQ3BCLEtBQUssSUFBSSxXQUFXOyIsCiAgIm5hbWVzIjogWyJrZXlzIiwgIm1vZGVscyIsICJtb2RlbCIsICJqb2luIiwgInByb3ZpZGVycyIsICJjYWNoZWQiLCAibW9kZWxzIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJqb2luIiwgImNhY2hlRmlsZSIsICJjYWNoZWQiLCAiVFRMIiwgIm1vZGVscyIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJyZXNvbHZlIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJqb2luIiwgImNvbmZpZyIsICJleGlzdHNTeW5jIiwgImhvbWVkaXIiLCAiZGlybmFtZSIsICJqb2luIiwgInJlc29sdmUiLCAicmVhZEZpbGUiLCAiam9pbiIsICJyZWFkRmlsZSIsICJyZWFkZGlyIiwgImpvaW4iLCAic2NhbkRpciIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiY29uZmlnIiwgInNjb3BlIiwgInBlbmRpbmciLCAicmVnaXN0cnkiLCAicmVhZEZpbGUiLCAicmVhZGRpciIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJzY2FuRGlyIiwgInNjb3BlIiwgImhvbWVkaXIiLCAic2hlbGxzIiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAiam9pbiIsICJzY29wZSIsICJwYXJzZUFyZ3MiLCAicmVhZEZpbGUiLCAicmVhZEZpbGUiLCAicmVzb2x2ZSIsICJNQVhfTElORVMiLCAibWtkaXIiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImRpcm5hbWUiLCAicmVzb2x2ZSIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAicmVzb2x2ZSIsICJzaGVsbHMiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJyZXNvbHZlIiwgImV4ZWNGaWxlIiwgInJlc29sdmUiLCAiTUFYX1JFU1VMVFMiLCAic2hlbGxzIiwgIndha2V1cHMiLCAic2NvcGUiLCAiZXhpc3RzU3luYyIsICJqb2luIiwgIm1vZGVscyIsICJwcm92aWRlcnMiLCAiY2hhdGdwdCIsICJjYXRhbG9nRGF0YSIsICJjb2RleENyZWRzIiwgImNvbmZpZyIsICJtb2RlbCIsICJib290IiwgInNoZWxscyIsICJyZWFkRmlsZVN5bmMiLCAid2FrZXVwcyIsICJleGlzdHNTeW5jIiwgIndyaXRlRmlsZSIsICJob21lZGlyIiwgImpvaW4iLCAiY3JlYXRlU2lnbmFsIiwgIk1lbnUiLCAiU2Nyb2xsQm94IiwgInVzZUZvY3VzIiwgInVzZUlucHV0IiwgImFwcGVuZEZpbGUiLCAicmVhZEZpbGUiLCAicmVhZGRpciIsICJqb2luIiwgInNjb3BlIiwgInJlYWRkaXIiLCAic3RhdCIsICJqb2luIiwgInNjYW5EaXIiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgInJlc29sdmUiLCAiZXhlY0ZpbGUiLCAiZmciLCAiVFRMIiwgInJlc29sdmUiLCAiY3JlYXRlU2lnbmFsIiwgImZhaWxlZCIsICJ2ZXJzaW9uIiwgIk1hcmtkb3duIiwgImpzeCIsICJqc3hzIiwgIk1hcmtkb3duIiwgImNyZWF0ZVNpZ25hbCIsICJTY3JvbGxCb3giLCAidXNlSW5wdXQiLCAianN4IiwgImpzeHMiLCAibW9kZWxzIiwgImNyZWF0ZVNpZ25hbCIsICJ1c2VJbnB1dCIsICJTY3JvbGxCb3giLCAidmVyc2lvbiIsICJzaGVsbHMiLCAicHJvdmlkZXJzIiwgIndha2V1cHMiLCAic2NvcGUiLCAianN4IiwgImpzeHMiLCAiYm9vdCIsICJ2ZXJzaW9uIiwgIm1vZGVscyIsICJjcmVhdGVTaWduYWwiLCAibW9kZWwiLCAiZGVmYXVsdE1vZGVsIiwgIml0ZW1zIiwgInVzYWdlIiwgImpvaW4iLCAid3JpdGVGaWxlIiwgImhvbWVkaXIiLCAidXNlRm9jdXMiLCAidXNlSW5wdXQiLCAiZXhpc3RzU3luYyIsICJTY3JvbGxCb3giLCAiTWVudSIsICJzY29wZSIsICJqc3giLCAicmVhZEZpbGVTeW5jIiwgImNvbm5lY3RPcGVuQUkiLCAicnVuSGVhZGxlc3MiXQp9Cg==
|
|
5671
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvcmUva2V5cy5qcyIsICIuLi9zcmMvY29yZS9tb2RlbHMuanMiLCAiLi4vc3JjL2NvcmUvcGF0aHMuanMiLCAiLi4vc3JjL2NvcmUvY2F0YWxvZy1zbmFwc2hvdC5qc29uIiwgIi4uL3NyYy9jb3JlL2NhdGFsb2cuanMiLCAiLi4vc3JjL2NvcmUvY29kZXgtbW9kZWxzLmpzIiwgIi4uL3NyYy9jb3JlL29wZW5haS1hdXRoLmpzIiwgIi4uL3NyYy9jb3JlL2NvbmZpZy5qcyIsICIuLi9zcmMvY29yZS9jb250ZXh0LmpzIiwgIi4uL3NyYy9jb3JlL3NraWxscy5qcyIsICIuLi9zcmMvY29yZS9jb21tYW5kcy5qcyIsICIuLi9zcmMvY29yZS9tY3AuanMiLCAiLi4vc3JjL2NvcmUvbWVtb3J5LmpzIiwgIi4uL3NyYy9jb3JlL2Jvb3QuanMiLCAiLi4vc3JjL2NvcmUvc2hlbGxzLmpzIiwgIi4uL3NyYy9jb3JlL2V2ZW50cy5qcyIsICIuLi9zcmMvY29yZS9zZXNzaW9uLmpzIiwgIi4uL3NyYy9jb3JlL2NvbXBhY3Rpb24uanMiLCAiLi4vc3JjL2NvcmUvZGVyaXZlLmpzIiwgIi4uL3NyYy9jb3JlL2FnZW50LmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL3JlY29yZGVyLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL3JlYWQuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZGlmZi5qcyIsICIuLi9zcmMvY29yZS90b29scy93cml0ZS5qcyIsICIuLi9zcmMvY29yZS90b29scy9lZGl0LmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2Jhc2guanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZ2xvYi5qcyIsICIuLi9zcmMvY29yZS90b29scy9ncmVwLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2luZGV4LmpzIiwgIi4uL3NyYy9jb3JlL3N5c3RlbS1wcm9tcHQuanMiLCAiLi4vc3JjL3VpL2Z1enp5LmpzIiwgIi4uL3NyYy91aS9hdHRhY2htZW50cy5qcyIsICIuLi9zcmMvaGVhZGxlc3MuanMiLCAiLi4vc3JjL21haW4uanN4IiwgIi4uL3NyYy9jbGktYXJncy5qcyIsICIuLi9zcmMvY29yZS90ZXJtaW5hbC10aGVtZS5qcyIsICIuLi9zcmMvY29yZS93YWtldXBzLmpzIiwgIi4uL3NyYy91aS9hcHAuanN4IiwgIi4uL3NyYy9jb3JlL2hpc3RvcnkuanMiLCAiLi4vc3JjL2NvcmUvdXNlci10b29scy5qcyIsICIuLi9zcmMvY29yZS9yZXdpbmQuanMiLCAiLi4vc3JjL2NvcmUvZXhwb3J0LmpzIiwgIi4uL3NyYy91aS9jb21wbGV0aW9uLmpzIiwgIi4uL3NyYy91aS9maWxlcy5qcyIsICIuLi9zcmMvdWkvaGlnaGxpZ2h0LmpzIiwgIi4uL3NyYy91aS90aGVtZS5qcyIsICIuLi9zcmMvdWkvdHJhbnNjcmlwdC5qc3giLCAiLi4vc3JjL3VpL2hlbHAuanN4IiwgIi4uL3NyYy91aS9wYW5lbHMuanN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBzZXRLZXlzIH0gZnJvbSAnQHByc20vYWknXG5cbmNvbnN0IFBST1ZJREVSUyA9IFtcbiAgeyBpZDogJ2dvb2dsZScsIGxhYmVsOiAnR2VtaW5pJywgZW52OiBbJ0dFTUlOSV9BUElfS0VZJywgJ0dPT0dMRV9BSV9BUElfS0VZJ10gfSxcbiAgeyBpZDogJ2FudGhyb3BpYycsIGxhYmVsOiAnQ2xhdWRlJywgZW52OiBbJ0FOVEhST1BJQ19BUElfS0VZJ10gfSxcbiAgeyBpZDogJ29wZW5haScsIGxhYmVsOiAnT3BlbkFJJywgZW52OiBbJ09QRU5BSV9BUElfS0VZJ10gfSxcbiAgeyBpZDogJ3hhaScsIGxhYmVsOiAnR3JvaycsIGVudjogWydYQUlfQVBJX0tFWSddIH0sXG5dXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNjb3ZlcktleXMoZW52ID0gcHJvY2Vzcy5lbnYpIHtcbiAgY29uc3Qga2V5cyA9IHt9XG4gIGZvciAoY29uc3QgcCBvZiBQUk9WSURFUlMpIHtcbiAgICBjb25zdCBuYW1lID0gcC5lbnYuZmluZCgobikgPT4gZW52W25dKVxuICAgIGlmIChuYW1lKSBrZXlzW3AuaWRdID0gZW52W25hbWVdXG4gIH1cbiAgcmV0dXJuIGtleXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5S2V5cyhrZXlzKSB7XG4gIHNldEtleXMoa2V5cylcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGtleXMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrZXlIaW50KHByb3ZpZGVySWQpIHtcbiAgcmV0dXJuIFBST1ZJREVSUy5maW5kKChwKSA9PiBwLmlkID09PSBwcm92aWRlcklkKT8uZW52WzBdIHx8IGAke3Byb3ZpZGVySWQudG9VcHBlckNhc2UoKX1fQVBJX0tFWWBcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gZmluZE1vZGVsKG1vZGVscywgbmFtZSkge1xuICByZXR1cm4gbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSkgfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdE1vZGVsKG1vZGVscykge1xuICByZXR1cm4gbW9kZWxzLmZpbmQoKG0pID0+IG0uYXZhaWxhYmxlICE9PSBmYWxzZSkgfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXN0aW1hdGVDb3N0KG1vZGVsLCB1c2FnZSkge1xuICBpZiAoIW1vZGVsPy5wcmljZSB8fCAhdXNhZ2UpIHJldHVybiAwXG4gIGNvbnN0IGluQ29zdCA9ICh1c2FnZS5wcm9tcHRUb2tlbnMgfHwgMCkgKiBtb2RlbC5wcmljZS5pblxuICBjb25zdCBvdXRDb3N0ID0gKHVzYWdlLmNvbXBsZXRpb25Ub2tlbnMgfHwgMCkgKiBtb2RlbC5wcmljZS5vdXRcbiAgcmV0dXJuIChpbkNvc3QgKyBvdXRDb3N0KSAvIDFlNlxufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNvSG9tZSgpIHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52LlBJQ09fSE9NRSB8fCBqb2luKGhvbWVkaXIoKSwgJy5waWNvJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RLZXkocm9vdCkge1xuICByZXR1cm4gcmVzb2x2ZShyb290KS5yZXBsYWNlKC9bL1xcXFw6XS9nLCAnLScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJvamVjdFJvb3QoY3dkKSB7XG4gIGxldCBkaXIgPSByZXNvbHZlKGN3ZClcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChleGlzdHNTeW5jKGpvaW4oZGlyLCAnLmdpdCcpKSkgcmV0dXJuIGRpclxuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKVxuICAgIGlmIChwYXJlbnQgPT09IGRpciB8fCBkaXIgPT09IGhvbWUpIHJldHVybiByZXNvbHZlKGN3ZClcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdERpcihyb290KSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdwcm9qZWN0cycsIHByb2plY3RLZXkocm9vdCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uc0Rpcihyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdzZXNzaW9ucycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0SGlzdG9yeUZpbGUocm9vdCkge1xuICByZXR1cm4gam9pbihwcm9qZWN0RGlyKHJvb3QpLCAnaGlzdG9yeS5qc29ubCcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0TWNwRmlsZShyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdtY3AuanNvbicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxNY3BGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnbWNwLmpzb24nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsU2tpbGxzRGlyKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnc2tpbGxzJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RTa2lsbHNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihyb290LCAnLnBpY28nLCAnc2tpbGxzJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbEFnZW50c0ZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdBR0VOVFMubWQnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRGlyKGRpcikge1xuICBta2RpclN5bmMoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICByZXR1cm4gZGlyXG59XG4iLCAie1wiZ29vZ2xlXCI6e1wibW9kZWxzXCI6e1wiZ2VtaW5pLTMuMS1mbGFzaC1saXRlXCI6e1wiaWRcIjpcImdlbWluaS0zLjEtZmxhc2gtbGl0ZVwiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBGbGFzaCBMaXRlXCIsXCJkZXNjcmlwdGlvblwiOlwiTG93LWxhdGVuY3kgR2VtaW5pIG1vZGVsIGZvciBoaWdoLXZvbHVtZSBtdWx0aW1vZGFsIGFuZCBhZ2VudCB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoxLjUsXCJjYWNoZV9yZWFkXCI6MC4wMjUsXCJpbnB1dF9hdWRpb1wiOjAuNX19LFwiZ2VtaW5pLTIuNS1mbGFzaC1wcmV2aWV3LXR0c1wiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoLXByZXZpZXctdHRzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IEZsYXNoIFByZXZpZXcgVFRTXCIsXCJkZXNjcmlwdGlvblwiOlwiU3BlZWNoIGdlbmVyYXRpb24gbW9kZWwgZm9yIGNvbnRyb2xsYWJsZSB2b2ljZSwgbmFycmF0aW9uLCBhbmQgYXVkaW8gZGVsaXZlcnlcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDUtMDFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcImF1ZGlvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjEwfX0sXCJnZW1pbmktMi41LXByb1wiOntcImlkXCI6XCJnZW1pbmktMi41LXByb1wiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJHb29nbGUncyBwcm92ZW4gcmVhc29uaW5nIG1vZGVsIGZvciBjb2RpbmcsIG1hdGgsIGFuZCBtdWx0aW1vZGFsIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEyOCxcIm1heFwiOjMyNzY4fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1fX19LFwiZ2VtaW5pLTIuNS1mbGFzaFwiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IEZsYXNoXCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBHZW1pbmkgd29ya2hvcnNlIGZvciBtdWx0aW1vZGFsIGFwcHMgd2hlcmUgbGF0ZW5jeSBhbmQgcHJpY2UgbWF0dGVyXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjAsXCJtYXhcIjoyNDU3Nn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA2LTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDYtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4zLFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMDMsXCJpbnB1dF9hdWRpb1wiOjF9fSxcImdlbWluaS0zLjUtZmxhc2hcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuNS1mbGFzaFwiLFwibmFtZVwiOlwiR2VtaW5pIDMuNSBGbGFzaFwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR2VtaW5pIG1vZGVsIGJhbGFuY2luZyBtdWx0aW1vZGFsIHJlYXNvbmluZywgdG9vbCB1c2UsIGFuZCBjb3N0XCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA1LTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDUtMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MS41LFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjE1LFwiaW5wdXRfYXVkaW9cIjoxLjV9fSxcImdlbW1hLTQtMzFiLWl0XCI6e1wiaWRcIjpcImdlbW1hLTQtMzFiLWl0XCIsXCJuYW1lXCI6XCJHZW1tYSA0IDMxQiBJVFwiLFwiZGVzY3JpcHRpb25cIjpcIkxhcmdlc3QgR2VtbWEgNCBpbnN0cnVjdGlvbiBtb2RlbCBmb3Igb3Blbiwgc2VsZi1ob3N0ZWQgY2hhdCBhbmQgcmVhc29uaW5nXCIsXCJmYW1pbHlcIjpcImdlbW1hXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0wMlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTAyXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6dHJ1ZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjI2MjE0NCxcIm91dHB1dFwiOjMyNzY4fX0sXCJnZW1pbmktMi4wLWZsYXNoXCI6e1wiaWRcIjpcImdlbWluaS0yLjAtZmxhc2hcIixcIm5hbWVcIjpcIkdlbWluaSAyLjAgRmxhc2hcIixcImRlc2NyaXB0aW9uXCI6XCJFYXJsaWVyIEdlbWluaSBGbGFzaCB3b3JraG9yc2UgZm9yIHJlc3BvbnNpdmUgbXVsdGltb2RhbCBhcHBzIGFuZCB0b29sIHVzZVwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo4MTkyfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MC4xLFwib3V0cHV0XCI6MC40LFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJnZW1pbmktZW1iZWRkaW5nLTAwMVwiOntcImlkXCI6XCJnZW1pbmktZW1iZWRkaW5nLTAwMVwiLFwibmFtZVwiOlwiR2VtaW5pIEVtYmVkZGluZyAwMDFcIixcImRlc2NyaXB0aW9uXCI6XCJFbWJlZGRpbmcgbW9kZWwgZm9yIHNlbWFudGljIHNlYXJjaCwgcmV0cmlldmFsLCBjbHVzdGVyaW5nLCBhbmQgcmFua2luZyBwaXBlbGluZXNcIixcImZhbWlseVwiOlwiZ2VtaW5pXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA1LTIwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDUtMjBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjA0OCxcIm91dHB1dFwiOjF9LFwiY29zdFwiOntcImlucHV0XCI6MC4xNSxcIm91dHB1dFwiOjB9fSxcImdlbWluaS0zLjEtcHJvLXByZXZpZXctY3VzdG9tdG9vbHNcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1wcm8tcHJldmlldy1jdXN0b210b29sc1wiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBQcm8gUHJldmlldyBDdXN0b20gVG9vbHNcIixcImRlc2NyaXB0aW9uXCI6XCJBZHZhbmNlZCBHZW1pbmkgbW9kZWwgZm9yIGNvbXBsZXggcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBtdWx0aW1vZGFsIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAyLTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ2VtaW5pLWZsYXNoLWxpdGUtbGF0ZXN0XCI6e1wiaWRcIjpcImdlbWluaS1mbGFzaC1saXRlLWxhdGVzdFwiLFwibmFtZVwiOlwiR2VtaW5pIEZsYXNoLUxpdGUgTGF0ZXN0XCIsXCJkZXNjcmlwdGlvblwiOlwiTG93LWxhdGVuY3kgR2VtaW5pIG1vZGVsIGZvciBoaWdoLXZvbHVtZSBtdWx0aW1vZGFsIGFuZCBhZ2VudCB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjo1MTIsXCJtYXhcIjoyNDU3Nn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4xLFwib3V0cHV0XCI6MC40LFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJnZW1pbmktMy1wcm8taW1hZ2UtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy1wcm8taW1hZ2UtcHJldmlld1wiLFwibmFtZVwiOlwiTmFubyBCYW5hbmEgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiTmFubyBCYW5hbmEgUHJvIGZvciBoaWdoZXItZmlkZWxpdHkgaW1hZ2UgZ2VuZXJhdGlvbiBhbmQgZGVzaWduLWhlYXZ5IGVkaXRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTIwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMjBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMzEwNzIsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6MTIwfX0sXCJnZW1pbmktMi41LWZsYXNoLWltYWdlXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2gtaW1hZ2VcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hXCIsXCJkZXNjcmlwdGlvblwiOlwiTmFubyBCYW5hbmEgaW1hZ2UgbW9kZWwgZm9yIGZhc3QgZ2VuZXJhdGlvbiwgZWRpdHMsIGFuZCBjaGFyYWN0ZXItY29uc2lzdGVudCBhc3NldHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MzI3NjgsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjMsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjA3NX19LFwiZ2VtaW5pLTIuNS1mbGFzaC1saXRlXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2gtbGl0ZVwiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBGbGFzaC1MaXRlXCIsXCJkZXNjcmlwdGlvblwiOlwiTGVhbiBHZW1pbmkgMi41IGxhbmUgZm9yIGNoZWFwIG11bHRpbW9kYWwgdHJhZmZpYyBhbmQgcXVpY2sgYWdlbnRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaC1saXRlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6NTEyLFwibWF4XCI6MjQ1NzZ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA2LTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAxLFwiaW5wdXRfYXVkaW9cIjowLjN9fSxcImdlbWluaS1vbW5pLWZsYXNoLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLW9tbmktZmxhc2gtcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIE9tbmkgRmxhc2ggUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIlZpZGVvIGdlbmVyYXRpb24gYW5kIGVkaXRpbmcgbW9kZWwgZm9yIGZhc3QsIGNvbnZlcnNhdGlvbmFsIHRleHQtIGFuZCBpbWFnZS10by12aWRlbyB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ2VtaW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDYtMzBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNi0zMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCJdLFwib3V0cHV0XCI6W1widmlkZW9cIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMzEwNzIsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjUsXCJvdXRwdXRcIjoxNy41fX0sXCJnZW1pbmktMy4xLWZsYXNoLWltYWdlLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1mbGFzaC1pbWFnZS1wcmV2aWV3XCIsXCJuYW1lXCI6XCJOYW5vIEJhbmFuYSAyXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjY1NTM2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC41LFwib3V0cHV0XCI6NjB9fSxcImdlbWluaS0zLjEtcHJvLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1wcm8tcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBQcm8gUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIlJlYXNvbmluZy1maXJzdCBHZW1pbmkgcHJldmlldyBmb3IgYWdlbnRpYyBjb2RpbmcgYW5kIGNvbXBsZXggcHJvYmxlbSBzb2x2aW5nXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAyLTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ2VtbWEtNC0yNmItYTRiLWl0XCI6e1wiaWRcIjpcImdlbW1hLTQtMjZiLWE0Yi1pdFwiLFwibmFtZVwiOlwiR2VtbWEgNCAyNkIgQTRCIElUXCIsXCJkZXNjcmlwdGlvblwiOlwiT3BlbiBHZW1tYSBpbnN0cnVjdGlvbiBtb2RlbCBmb3IgZWZmaWNpZW50IGNoYXQgYW5kIHNlbGYtaG9zdGVkIGRlcGxveW1lbnRzXCIsXCJmYW1pbHlcIjpcImdlbW1hXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0wMlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTAyXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6dHJ1ZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjI2MjE0NCxcIm91dHB1dFwiOjMyNzY4fX0sXCJnZW1pbmktMy1wcm8tcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy1wcm8tcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMgUHJvIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJQcmV2aWV3IEdlbWluaSBmbGFnc2hpcCBmb3IgY29tcGxleCByZWFzb25pbmcsIGNvZGluZywgYW5kIHJpY2ggbXVsdGltb2RhbCBwcm9tcHRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMThcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJzdGF0dXNcIjpcImRlcHJlY2F0ZWRcIixcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ2VtaW5pLTMtZmxhc2gtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy1mbGFzaC1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMyBGbGFzaCBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiTmV3IEdlbWluaSBmbGFzaCBsYW5lIGJyaW5naW5nIGZyb250aWVyLXN0eWxlIG11bHRpbW9kYWwgcmVhc29uaW5nIHRvIGNoZWFwZXIgcnVuc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjMsXCJjYWNoZV9yZWFkXCI6MC4wNSxcImlucHV0X2F1ZGlvXCI6MX19LFwiZ2VtaW5pLTIuNS1wcm8tcHJldmlldy10dHNcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuNS1wcm8tcHJldmlldy10dHNcIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgUHJvIFByZXZpZXcgVFRTXCIsXCJkZXNjcmlwdGlvblwiOlwiU3BlZWNoIGdlbmVyYXRpb24gbW9kZWwgZm9yIGNvbnRyb2xsYWJsZSB2b2ljZSwgbmFycmF0aW9uLCBhbmQgYXVkaW8gZGVsaXZlcnlcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDUtMDFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcImF1ZGlvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjoyMH19LFwiZ2VtaW5pLWZsYXNoLWxhdGVzdFwiOntcImlkXCI6XCJnZW1pbmktZmxhc2gtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHZW1pbmkgRmxhc2ggTGF0ZXN0XCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBHZW1pbmkgbW9kZWwgYmFsYW5jaW5nIG11bHRpbW9kYWwgcmVhc29uaW5nLCB0b29sIHVzZSwgYW5kIGNvc3RcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MCxcIm1heFwiOjI0NTc2fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjMsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4wNzUsXCJpbnB1dF9hdWRpb1wiOjF9fSxcImdlbWluaS0zLjEtZmxhc2gtbGl0ZS1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLjEtZmxhc2gtbGl0ZS1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIEZsYXNoIExpdGUgUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIkxlZ2FjeSBtb2RlbCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGludGVncmF0aW9uc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTAzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjowLjI1LFwib3V0cHV0XCI6MS41LFwiY2FjaGVfcmVhZFwiOjAuMDI1LFwiaW5wdXRfYXVkaW9cIjowLjV9fSxcImdlbWluaS0yLjAtZmxhc2gtbGl0ZVwiOntcImlkXCI6XCJnZW1pbmktMi4wLWZsYXNoLWxpdGVcIixcIm5hbWVcIjpcIkdlbWluaSAyLjAgRmxhc2gtTGl0ZVwiLFwiZGVzY3JpcHRpb25cIjpcIkxlZ2FjeSBtb2RlbCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGludGVncmF0aW9uc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjgxOTJ9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjowLjA3NSxcIm91dHB1dFwiOjAuM319fX0sXCJhbnRocm9waWNcIjp7XCJtb2RlbHNcIjp7XCJjbGF1ZGUtb3B1cy00LTVcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjUgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJGbGFnc2hpcCBDbGF1ZGUgbW9kZWwgZm9yIGRlZXAgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0yNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxXCI6e1wiaWRcIjpcImNsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDFcIixcIm5hbWVcIjpcIkNsYXVkZSBIYWlrdSA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IENsYXVkZSBtb2RlbCBmb3IgcmVzcG9uc2l2ZSBhc3Npc3RhbmNlLCBjbGFzc2lmaWNhdGlvbiwgYW5kIGxpZ2h0d2VpZ2h0IGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtaGFpa3VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDItMjhcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMC0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEwLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuMSxcImNhY2hlX3dyaXRlXCI6MS4yNX19LFwiY2xhdWRlLW9wdXMtNC0xLTIwMjUwODA1XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtMS0yMDI1MDgwNVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC4xXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MzIwMDB9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjc1LFwiY2FjaGVfcmVhZFwiOjEuNSxcImNhY2hlX3dyaXRlXCI6MTguNzV9fSxcImNsYXVkZS1zb25uZXQtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIENsYXVkZSBtb2RlbCBmb3IgY29kaW5nLCBhbmFseXNpcywgYWdlbnQgd29ya2Zsb3dzLCBhbmQgY29zdCBjb250cm9sXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1zb25uZXRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDctMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozLFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4zLFwiY2FjaGVfd3JpdGVcIjozLjc1fX0sXCJjbGF1ZGUtb3B1cy00LTdcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC03XCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjdcIixcImRlc2NyaXB0aW9uXCI6XCJTdHJvbmdlciBPcHVzIHRpZXIgZm9yIGFkdmFuY2VkIHNvZnR3YXJlIHdvcmsgYW5kIGhpZ2gtc3Rha2VzIHJlYXNvbmluZ1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDEtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0xNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjoxNTAsXCJjYWNoZV9yZWFkXCI6MyxcImNhY2hlX3dyaXRlXCI6MzcuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzcGVlZFwiOlwiZmFzdFwifSxcImhlYWRlcnNcIjp7XCJhbnRocm9waWMtYmV0YVwiOlwiZmFzdC1tb2RlLTIwMjYtMDItMDFcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLXNvbm5ldC01XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA1XCIsXCJkZXNjcmlwdGlvblwiOlwiRXZlcnlkYXkgQ2xhdWRlIGFnZW50IG1vZGVsIGZvciBjb2RpbmcsIHBsYW5uaW5nLCBicm93c2luZywgYW5kIGdlbmVyYWwgd29ya1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDEtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNi0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA2LTMwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fX0sXCJjbGF1ZGUtb3B1cy00LTUtMjAyNTExMDFcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC01LTIwMjUxMTAxXCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJGbGFnc2hpcCBDbGF1ZGUgbW9kZWwgZm9yIGRlZXAgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtb3B1cy00LThcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC04XCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjhcIixcImRlc2NyaXB0aW9uXCI6XCJUb3AgQ2xhdWRlIE9wdXMgdGllciBmb3IgdGhlIGhhcmRlc3QgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA1LTI4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDUtMjhcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjUwLFwiY2FjaGVfcmVhZFwiOjEsXCJjYWNoZV93cml0ZVwiOjEyLjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic3BlZWRcIjpcImZhc3RcIn0sXCJoZWFkZXJzXCI6e1wiYW50aHJvcGljLWJldGFcIjpcImZhc3QtbW9kZS0yMDI2LTAyLTAxXCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1vcHVzLTQtMVwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTFcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuMSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkZsYWdzaGlwIENsYXVkZSBtb2RlbCBmb3IgZGVlcCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxvbmctaG9yaXpvbiBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDMtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjMyMDAwfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MTUsXCJvdXRwdXRcIjo3NSxcImNhY2hlX3JlYWRcIjoxLjUsXCJjYWNoZV93cml0ZVwiOjE4Ljc1fX0sXCJjbGF1ZGUtZmFibGUtNVwiOntcImlkXCI6XCJjbGF1ZGUtZmFibGUtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIEZhYmxlIDVcIixcImRlc2NyaXB0aW9uXCI6XCJDbGF1ZGUgbW9kZWwgZm9yIGNyZWF0aXZlIHdyaXRpbmcsIGFuYWx5c2lzLCBhbmQgY29udHJvbGxlZCBhZ2VudCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiY2xhdWRlLWZhYmxlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNi0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA2LTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo1MCxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fX0sXCJjbGF1ZGUtaGFpa3UtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1oYWlrdS00LTVcIixcIm5hbWVcIjpcIkNsYXVkZSBIYWlrdSA0LjUgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IENsYXVkZSBsYW5lIGZvciBsaWdodHdlaWdodCBhZ2VudHMsIG9mZmljZSB0YXNrcywgYW5kIHJlc3BvbnNpdmUgY2hhdFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtaGFpa3VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDItMjhcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMC0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEwLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuMSxcImNhY2hlX3dyaXRlXCI6MS4yNX19LFwiY2xhdWRlLW9wdXMtNC02XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtNlwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC42XCIsXCJkZXNjcmlwdGlvblwiOlwiSGlnaC1lbmQgQ2xhdWRlIGZvciBkaWZmaWN1bHQgY29kaW5nLCBwbGFubmluZywgYW5kIHNsb3dlciBleHBlcnQgcmVhc29uaW5nXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJtYXhcIl19LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDUtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0wNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjoxNTAsXCJjYWNoZV9yZWFkXCI6MyxcImNhY2hlX3dyaXRlXCI6MzcuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzcGVlZFwiOlwiZmFzdFwifSxcImhlYWRlcnNcIjp7XCJhbnRocm9waWMtYmV0YVwiOlwiZmFzdC1tb2RlLTIwMjYtMDItMDFcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLXNvbm5ldC00LTUtMjAyNTA5MjlcIjp7XCJpZFwiOlwiY2xhdWRlLXNvbm5ldC00LTUtMjAyNTA5MjlcIixcIm5hbWVcIjpcIkNsYXVkZSBTb25uZXQgNC41XCIsXCJkZXNjcmlwdGlvblwiOlwiQmFsYW5jZWQgQ2xhdWRlIG1vZGVsIGZvciBjb2RpbmcsIGFuYWx5c2lzLCBhZ2VudCB3b3JrZmxvd3MsIGFuZCBjb3N0IGNvbnRyb2xcIixcImZhbWlseVwiOlwiY2xhdWRlLXNvbm5ldFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjMsXCJjYWNoZV93cml0ZVwiOjMuNzV9fSxcImNsYXVkZS1zb25uZXQtNC02XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC02XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNlwiLFwiZGVzY3JpcHRpb25cIjpcIkNsYXVkZSB3b3JraG9yc2UgZm9yIGNvZGluZyBhZ2VudHMsIGNhcmVmdWwgYW5hbHlzaXMsIGFuZCBwcm9kdWN0aW9uIGNvc3QgY29udHJvbFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJtYXhcIl19LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MyxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMyxcImNhY2hlX3dyaXRlXCI6My43NX19fX0sXCJvcGVuYWlcIjp7XCJtb2RlbHNcIjp7XCJvM1wiOntcImlkXCI6XCJvM1wiLFwibmFtZVwiOlwibzNcIixcImRlc2NyaXB0aW9uXCI6XCJEZWxpYmVyYXRlIG8tc2VyaWVzIHJlYXNvbmVyIGZvciBoYXJkIG1hdGgsIGNvZGluZywgYW5kIG11bHRpLXN0ZXAgYW5hbHlzaXNcIixcImZhbWlseVwiOlwib1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OCxcImNhY2hlX3JlYWRcIjowLjV9fSxcInRleHQtZW1iZWRkaW5nLTMtbGFyZ2VcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctMy1sYXJnZVwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctMy1sYXJnZVwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wMS0yNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTAxLTI1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTEsXCJvdXRwdXRcIjozMDcyfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMTMsXCJvdXRwdXRcIjowfX0sXCJncHQtNS4yLXByb1wiOntcImlkXCI6XCJncHQtNS4yLXByb1wiLFwibmFtZVwiOlwiR1BULTUuMiBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXItYWNjdXJhY3kgR1BULTUuMiB2YXJpYW50IGZvciB0b3VnaGVyIHJlYXNvbmluZyBhbmQgcmV2aWV3IHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIxLFwib3V0cHV0XCI6MTY4fX0sXCJncHQtNS42XCI6e1wiaWRcIjpcImdwdC01LjZcIixcIm5hbWVcIjpcIkdQVC01LjZcIixcImRlc2NyaXB0aW9uXCI6XCJGcm9udGllciBHUFQtNS42IG1vZGVsIGZvciBjb21wbGV4IHByb2Zlc3Npb25hbCB3b3JrLCBjb2RpbmcsIGFuZCBhZ2VudGljIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo2MCxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fSxcInByb1wiOntcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInJlYXNvbmluZ1wiOntcIm1vZGVcIjpcInByb1wifX19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fX19LFwiZ3B0LTVcIjp7XCJpZFwiOlwiZ3B0LTVcIixcIm5hbWVcIjpcIkdQVC01XCIsXCJkZXNjcmlwdGlvblwiOlwiT3JpZ2luYWwgR1BULTUgd29ya2hvcnNlIGZvciByZWFzb25pbmcsIGNvZGluZywgd3JpdGluZywgYW5kIHRvb2wgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC0zLjUtdHVyYm9cIjp7XCJpZFwiOlwiZ3B0LTMuNS10dXJib1wiLFwibmFtZVwiOlwiR1BULTMuNS10dXJib1wiLFwiZGVzY3JpcHRpb25cIjpcIkNvbXBhY3QgR1BUIG1vZGVsIGZvciBsb3ctbGF0ZW5jeSBhc3Npc3RhbmNlIGFuZCBoaWdoLXZvbHVtZSB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMS0wOS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIzLTAzLTAxXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjMtMTEtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTYzODUsXCJvdXRwdXRcIjo0MDk2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjEuNSxcImNhY2hlX3JlYWRcIjowfX0sXCJncHQtNS1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUtcHJvXCIsXCJuYW1lXCI6XCJHUFQtNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXItYWNjdXJhY3kgR1BULTUgdGllciBmb3IgdG91Z2ggYW5hbHlzaXMsIGNvZGluZyByZXZpZXdzLCBhbmQgcGxhbm5pbmdcIixcImZhbWlseVwiOlwiZ3B0LXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEwLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTAtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MjcyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjE1LFwib3V0cHV0XCI6MTIwfX0sXCJncHQtNG9cIjp7XCJpZFwiOlwiZ3B0LTRvXCIsXCJuYW1lXCI6XCJHUFQtNG9cIixcImRlc2NyaXB0aW9uXCI6XCJPbW5pLWVyYSBHUFQgZm9yIG11bHRpbW9kYWwgY2hhdCwgcHJhY3RpY2FsIGNvZGluZywgYW5kIGdlbmVyYWwgYXNzaXN0YW50c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDUtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wOC0wNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtNFwiOntcImlkXCI6XCJncHQtNFwiLFwibmFtZVwiOlwiR1BULTRcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTExXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjMtMTEtMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNC0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkyLFwib3V0cHV0XCI6ODE5Mn0sXCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjYwfX0sXCJvNC1taW5pXCI6e1wiaWRcIjpcIm80LW1pbmlcIixcIm5hbWVcIjpcIm80LW1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IG8tc2VyaWVzIG1vZGVsIGZvciBjb21wYWN0IHJlYXNvbmluZywgY29kaW5nLCBhbmQgdG9vbCB1c2VcIixcImZhbWlseVwiOlwiby1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjEsXCJvdXRwdXRcIjo0LjQsXCJjYWNoZV9yZWFkXCI6MC4yNzV9fSxcIm8zLXByb1wiOntcImlkXCI6XCJvMy1wcm9cIixcIm5hbWVcIjpcIm8zLXByb1wiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2gtZWZmb3J0IG8zIHRpZXIgZm9yIGRpZmZpY3VsdCB0ZWNobmljYWwgcmVhc29uaW5nIGFuZCBjYXJlZnVsIGFuc3dlcnNcIixcImZhbWlseVwiOlwiby1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIwLFwib3V0cHV0XCI6ODB9fSxcImNoYXRncHQtaW1hZ2UtbGF0ZXN0XCI6e1wiaWRcIjpcImNoYXRncHQtaW1hZ2UtbGF0ZXN0XCIsXCJuYW1lXCI6XCJjaGF0Z3B0LWltYWdlLWxhdGVzdFwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfX0sXCJncHQtNG8tMjAyNC0wNS0xM1wiOntcImlkXCI6XCJncHQtNG8tMjAyNC0wNS0xM1wiLFwibmFtZVwiOlwiR1BULTRvICgyMDI0LTA1LTEzKVwiLFwiZGVzY3JpcHRpb25cIjpcIkdQVCBtb2RlbCBmb3IgZ2VuZXJhbCByZWFzb25pbmcsIHdyaXRpbmcsIGNvZGluZywgYW5kIHRvb2wtYXNzaXN0ZWQgdGFza3NcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA1LTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDUtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjQwOTZ9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjE1fX0sXCJncHQtNS40LW5hbm9cIjp7XCJpZFwiOlwiZ3B0LTUuNC1uYW5vXCIsXCJuYW1lXCI6XCJHUFQtNS40IG5hbm9cIixcImRlc2NyaXB0aW9uXCI6XCJDaGVhcGVzdCBHUFQtNS40IGxhbmUgZm9yIHNpbXBsZSByb3V0aW5nLCBleHRyYWN0aW9uLCBhbmQgYnVsayBhdXRvbWF0aW9uXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjIsXCJvdXRwdXRcIjoxLjI1LFwiY2FjaGVfcmVhZFwiOjAuMDJ9fSxcImdwdC01LWNoYXQtbGF0ZXN0XCI6e1wiaWRcIjpcImdwdC01LWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNSBDaGF0IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hhdC10dW5lZCBHUFQgbW9kZWwgZm9yIGNvbnZlcnNhdGlvbmFsIGFzc2lzdGFuY2UsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMS1jb2RleFwiOntcImlkXCI6XCJncHQtNS4xLWNvZGV4XCIsXCJuYW1lXCI6XCJHUFQtNS4xIENvZGV4XCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kZXggR1BUIGZvciByZXBvc2l0b3J5IGVkaXRzLCBjb2RlIHJldmlldywgYW5kIHByYWN0aWNhbCBzb2Z0d2FyZSBhZ2VudHNcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMy1jb2RleC1zcGFya1wiOntcImlkXCI6XCJncHQtNS4zLWNvZGV4LXNwYXJrXCIsXCJuYW1lXCI6XCJHUFQtNS4zIENvZGV4IFNwYXJrXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4LXNwYXJrXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAyLTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcImlucHV0XCI6MTAwMDAwLFwib3V0cHV0XCI6MzIwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtNS4xLWNvZGV4LW1heFwiOntcImlkXCI6XCJncHQtNS4xLWNvZGV4LW1heFwiLFwibmFtZVwiOlwiR1BULTUuMSBDb2RleCBNYXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2Rpbmctb3B0aW1pemVkIEdQVCBtb2RlbCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgcmV2aWV3cywgYW5kIGFnZW50aWMgc29mdHdhcmUgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMy1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS4zLWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNS4zIENoYXQgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJDaGF0LXR1bmVkIEdQVCBtb2RlbCBmb3IgY29udmVyc2F0aW9uYWwgYXNzaXN0YW5jZSwgd3JpdGluZywgYW5kIHRvb2wgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC00by0yMDI0LTA4LTA2XCI6e1wiaWRcIjpcImdwdC00by0yMDI0LTA4LTA2XCIsXCJuYW1lXCI6XCJHUFQtNG8gKDIwMjQtMDgtMDYpXCIsXCJkZXNjcmlwdGlvblwiOlwiR1BUIG1vZGVsIGZvciBnZW5lcmFsIHJlYXNvbmluZywgd3JpdGluZywgY29kaW5nLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDgtMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wOC0wNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MS4yNX19LFwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiOntcImlkXCI6XCJ0ZXh0LWVtYmVkZGluZy1hZGEtMDAyXCIsXCJuYW1lXCI6XCJ0ZXh0LWVtYmVkZGluZy1hZGEtMDAyXCIsXCJkZXNjcmlwdGlvblwiOlwiRW1iZWRkaW5nIG1vZGVsIGZvciBzZW1hbnRpYyBzZWFyY2gsIHJldHJpZXZhbCwgY2x1c3RlcmluZywgYW5kIHJhbmtpbmcgcGlwZWxpbmVzXCIsXCJmYW1pbHlcIjpcInRleHQtZW1iZWRkaW5nXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyMi0xMlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIyLTEyLTE1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjItMTItMTVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjE1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4xLFwib3V0cHV0XCI6MH19LFwibzMtbWluaVwiOntcImlkXCI6XCJvMy1taW5pXCIsXCJuYW1lXCI6XCJvMy1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiU21hbGxlciBvLXNlcmllcyByZWFzb25lciBmb3IgZWNvbm9taWNhbCBjb2RpbmcsIG1hdGgsIGFuZCBwbGFubmluZyB0YXNrc1wiLFwiZmFtaWx5XCI6XCJvLW1pbmlcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTEyLTIwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDEtMjlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMSxcIm91dHB1dFwiOjQuNCxcImNhY2hlX3JlYWRcIjowLjU1fX0sXCJncHQtNS4yXCI6e1wiaWRcIjpcImdwdC01LjJcIixcIm5hbWVcIjpcIkdQVC01LjJcIixcImRlc2NyaXB0aW9uXCI6XCJSZWxpYWJsZSBHUFQgZ2VuZXJhdGlvbiBmb3IgYnJvYWQgY29kaW5nLCB3cml0aW5nLCBhbmQgdG9vbC1hc3Npc3RlZCBwcm9kdWN0IHdvcmtcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC01LjMtY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUuMyBDb2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcInRleHQtZW1iZWRkaW5nLTMtc21hbGxcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctMy1zbWFsbFwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctMy1zbWFsbFwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wMS0yNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTAxLTI1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTEsXCJvdXRwdXRcIjoxNTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMDIsXCJvdXRwdXRcIjowfX0sXCJncHQtNS42LWx1bmFcIjp7XCJpZFwiOlwiZ3B0LTUuNi1sdW5hXCIsXCJuYW1lXCI6XCJHUFQtNS42IEx1bmFcIixcImRlc2NyaXB0aW9uXCI6XCJDb3N0LWVmZmljaWVudCBHUFQtNS42IG1vZGVsIGZvciBmYXN0LCBoaWdoLXZvbHVtZSB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ3B0LW5hbm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fSxcInByb1wiOntcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInJlYXNvbmluZ1wiOntcIm1vZGVcIjpcInByb1wifX19fX19LFwiY29zdFwiOntcImlucHV0XCI6MSxcIm91dHB1dFwiOjYsXCJjYWNoZV9yZWFkXCI6MC4xLFwiY2FjaGVfd3JpdGVcIjoxLjI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo5LFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fX19LFwiZ3B0LTUuMS1jb2RleC1taW5pXCI6e1wiaWRcIjpcImdwdC01LjEtY29kZXgtbWluaVwiLFwibmFtZVwiOlwiR1BULTUuMSBDb2RleCBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoyLFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJncHQtNS42LXRlcnJhXCI6e1wiaWRcIjpcImdwdC01LjYtdGVycmFcIixcIm5hbWVcIjpcIkdQVC01LjYgVGVycmFcIixcImRlc2NyaXB0aW9uXCI6XCJCYWxhbmNlZCBHUFQtNS42IG1vZGVsIGZvciBjYXBhYmxlLCBjb3N0LWVmZmljaWVudCBldmVyeWRheSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19LFwicHJvXCI6e1wicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wicmVhc29uaW5nXCI6e1wibW9kZVwiOlwicHJvXCJ9fX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1LFwiY2FjaGVfd3JpdGVcIjozLjEyNSxcInRpZXJzXCI6W3tcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX19LFwiZ3B0LTUuMS1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS4xLWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNS4xIENoYXRcIixcImRlc2NyaXB0aW9uXCI6XCJDaGF0LXR1bmVkIEdQVC01LjEgZm9yIHBvbGlzaGVkIGFzc2lzdGFudHMsIHdyaXRpbmcsIGFuZCBwcm9kdWN0IGNvbnZlcnNhdGlvbnNcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjItY2hhdC1sYXRlc3RcIjp7XCJpZFwiOlwiZ3B0LTUuMi1jaGF0LWxhdGVzdFwiLFwibmFtZVwiOlwiR1BULTUuMiBDaGF0XCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hhdC10dW5lZCBHUFQgbW9kZWwgZm9yIGNvbnZlcnNhdGlvbmFsIGFzc2lzdGFuY2UsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNzUsXCJvdXRwdXRcIjoxNCxcImNhY2hlX3JlYWRcIjowLjE3NX19LFwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCI6e1wiaWRcIjpcIm80LW1pbmktZGVlcC1yZXNlYXJjaFwiLFwibmFtZVwiOlwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVzZWFyY2ggbW9kZWwgZm9yIGxvbmctaG9yaXpvbiBpbnZlc3RpZ2F0aW9uLCBzeW50aGVzaXMsIGFuZCBhbmFseXRpY2FsIHJlcG9ydHNcIixcImZhbWlseVwiOlwiby1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNi0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA2LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJncHQtaW1hZ2UtMS41XCI6e1wiaWRcIjpcImdwdC1pbWFnZS0xLjVcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0xLjVcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTI1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMjVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTQuMS1uYW5vXCI6e1wiaWRcIjpcImdwdC00LjEtbmFub1wiLFwibmFtZVwiOlwiR1BULTQuMSBuYW5vXCIsXCJkZXNjcmlwdGlvblwiOlwiVGlueSBHUFQtNC4xIG9wdGlvbiBmb3IgY2xhc3NpZmljYXRpb24sIHJvdXRpbmcsIGFuZCB2ZXJ5IGhpZ2gtdm9sdW1lIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDc1NzYsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMjV9fSxcImdwdC00by0yMDI0LTExLTIwXCI6e1wiaWRcIjpcImdwdC00by0yMDI0LTExLTIwXCIsXCJuYW1lXCI6XCJHUFQtNG8gKDIwMjQtMTEtMjApXCIsXCJkZXNjcmlwdGlvblwiOlwiR1BUIG1vZGVsIGZvciBnZW5lcmFsIHJlYXNvbmluZywgd3JpdGluZywgY29kaW5nLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTEtMjBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMS0yMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MS4yNX19LFwibzFcIjp7XCJpZFwiOlwibzFcIixcIm5hbWVcIjpcIm8xXCIsXCJkZXNjcmlwdGlvblwiOlwiTy1zZXJpZXMgcmVhc29uaW5nIG1vZGVsIGZvciBoYXJkIGFuYWx5c2lzLCBtYXRoLCBjb2RpbmcsIGFuZCBwbGFubmluZ1wiLFwiZmFtaWx5XCI6XCJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTEyLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMTItMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjE1LFwib3V0cHV0XCI6NjAsXCJjYWNoZV9yZWFkXCI6Ny41fX0sXCJvMS1wcm9cIjp7XCJpZFwiOlwibzEtcHJvXCIsXCJuYW1lXCI6XCJvMS1wcm9cIixcImRlc2NyaXB0aW9uXCI6XCJPLXNlcmllcyByZWFzb25pbmcgbW9kZWwgZm9yIGhhcmQgYW5hbHlzaXMsIG1hdGgsIGNvZGluZywgYW5kIHBsYW5uaW5nXCIsXCJmYW1pbHlcIjpcIm8tcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTAzLTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDMtMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxNTAsXCJvdXRwdXRcIjo2MDB9fSxcImdwdC01LjRcIjp7XCJpZFwiOlwiZ3B0LTUuNFwiLFwibmFtZVwiOlwiR1BULTUuNFwiLFwiZGVzY3JpcHRpb25cIjpcIkFnZW50LXJlYWR5IEdQVCBmb3IgY29kaW5nIGFuZCBjb21wdXRlci11c2Ugd29ya2Zsb3dzIGF0IGEgbG93ZXIgY29zdFwiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjV9fX0sXCJncHQtNS40LW1pbmlcIjp7XCJpZFwiOlwiZ3B0LTUuNC1taW5pXCIsXCJuYW1lXCI6XCJHUFQtNS40IG1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJTdHJvbmcgc21hbGwgR1BUIGZvciBjb2Rpbmcgc3ViYWdlbnRzLCBxdWljayB0b29sIHVzZSwgYW5kIGhpZ2gtdm9sdW1lIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4xNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNzUsXCJvdXRwdXRcIjo0LjUsXCJjYWNoZV9yZWFkXCI6MC4wNzV9fSxcImdwdC00LjFcIjp7XCJpZFwiOlwiZ3B0LTQuMVwiLFwibmFtZVwiOlwiR1BULTQuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkxvbmctbGl2ZWQgR1BUIHdvcmtob3JzZSBmb3IgY29kaW5nLCBpbnN0cnVjdGlvbiBmb2xsb3dpbmcsIGFuZCBwcm9kdWN0aW9uIGFwcHNcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0NzU3NixcIm91dHB1dFwiOjMyNzY4fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo4LFwiY2FjaGVfcmVhZFwiOjAuNX19LFwibzMtZGVlcC1yZXNlYXJjaFwiOntcImlkXCI6XCJvMy1kZWVwLXJlc2VhcmNoXCIsXCJuYW1lXCI6XCJvMy1kZWVwLXJlc2VhcmNoXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVzZWFyY2ggbW9kZWwgZm9yIGxvbmctaG9yaXpvbiBpbnZlc3RpZ2F0aW9uLCBzeW50aGVzaXMsIGFuZCBhbmFseXRpY2FsIHJlcG9ydHNcIixcImZhbWlseVwiOlwib1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtZWRpdW1cIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDYtMjZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNi0yNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDAsXCJjYWNoZV9yZWFkXCI6Mi41fX0sXCJncHQtNS1taW5pXCI6e1wiaWRcIjpcImdwdC01LW1pbmlcIixcIm5hbWVcIjpcIkdQVC01IE1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJTbWFsbCBHUFQtNSBmb3IgcmVzcG9uc2l2ZSBhZ2VudHMsIGNvZGluZyBoZWxwLCBhbmQgZXZlcnlkYXkgYXV0b21hdGlvblwiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDUtMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjI1LFwib3V0cHV0XCI6MixcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ3B0LWltYWdlLTFcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTFcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0xXCIsXCJkZXNjcmlwdGlvblwiOlwiT3BlbkFJIGltYWdlIG1vZGVsIGZvciBwcm9kdWN0aW9uIGdlbmVyYXRpb24sIGVkaXRzLCBhbmQgYnJhbmQtc2FmZSB2aXN1YWwgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0yNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTI0XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9fSxcImdwdC00LjEtbWluaVwiOntcImlkXCI6XCJncHQtNC4xLW1pbmlcIixcIm5hbWVcIjpcIkdQVC00LjEgbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIkFmZm9yZGFibGUgR1BULTQuMSBsYW5lIGZvciBmYXN0IGNvZGluZyBoZWxwIGFuZCBzdHJ1Y3R1cmVkIGV4dHJhY3Rpb25cIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA0XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ3NTc2LFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MC40LFwib3V0cHV0XCI6MS42LFwiY2FjaGVfcmVhZFwiOjAuMX19LFwiZ3B0LTQtdHVyYm9cIjp7XCJpZFwiOlwiZ3B0LTQtdHVyYm9cIixcIm5hbWVcIjpcIkdQVC00IFR1cmJvXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29tcGFjdCBHUFQgbW9kZWwgZm9yIGxvdy1sYXRlbmN5IGFzc2lzdGFuY2UgYW5kIGhpZ2gtdm9sdW1lIHdvcmtsb2Fkc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0xMlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIzLTExLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDQtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjQwOTZ9LFwiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjozMH19LFwiZ3B0LWltYWdlLTEtbWluaVwiOntcImlkXCI6XCJncHQtaW1hZ2UtMS1taW5pXCIsXCJuYW1lXCI6XCJncHQtaW1hZ2UtMS1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9fSxcImdwdC01LW5hbm9cIjp7XCJpZFwiOlwiZ3B0LTUtbmFub1wiLFwibmFtZVwiOlwiR1BULTUgTmFub1wiLFwiZGVzY3JpcHRpb25cIjpcIlRpbnkgR1BULTUgbGFuZSBmb3Igcm91dGluZywgZXh0cmFjdGlvbiwgY2xhc3NpZmljYXRpb24sIGFuZCBidWxrIGpvYnNcIixcImZhbWlseVwiOlwiZ3B0LW5hbm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MC4wNSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAwNX19LFwiZ3B0LTUuNC1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUuNC1wcm9cIixcIm5hbWVcIjpcIkdQVC01LjQgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiTW9yZSBleGFjdCBHUFQtNS40IHRpZXIgZm9yIGRlbWFuZGluZyBwcm9mZXNzaW9uYWwgcmVhc29uaW5nIGFuZCBhZ2VudCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHQtcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjE4MCxcInRpZXJzXCI6W3tcImlucHV0XCI6NjAsXCJvdXRwdXRcIjoyNzAsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MH19fSxcImdwdC01LjUtcHJvXCI6e1wiaWRcIjpcImdwdC01LjUtcHJvXCIsXCJuYW1lXCI6XCJHUFQtNS41IFByb1wiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2hlc3QtYWNjdXJhY3kgR1BULTUuNSB0aWVyIGZvciBzbG93ZXIsIHByZWNpc2lvbi1oZWF2eSByZWFzb25pbmcgYW5kIGNvZGluZ1wiLFwiZmFtaWx5XCI6XCJncHQtcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTEyLTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMjNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0yM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjoxODAsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjYwLFwib3V0cHV0XCI6MjcwLFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NjAsXCJvdXRwdXRcIjoyNzB9fX0sXCJncHQtNG8tbWluaVwiOntcImlkXCI6XCJncHQtNG8tbWluaVwiLFwibmFtZVwiOlwiR1BULTRvIG1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJTbWFsbCBvbW5pIEdQVCBmb3IgY2hlYXAgbXVsdGltb2RhbCBhc3Npc3RhbmNlIGFuZCBwcm9kdWN0aW9uLXNjYWxlIHRyYWZmaWNcIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDctMThcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNy0xOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjE1LFwib3V0cHV0XCI6MC42LFwiY2FjaGVfcmVhZFwiOjAuMDc1fX0sXCJncHQtNS42LXNvbFwiOntcImlkXCI6XCJncHQtNS42LXNvbFwiLFwibmFtZVwiOlwiR1BULTUuNiBTb2xcIixcImRlc2NyaXB0aW9uXCI6XCJGcm9udGllciBHUFQtNS42IG1vZGVsIGZvciBjb21wbGV4IHByb2Zlc3Npb25hbCB3b3JrLCBjb2RpbmcsIGFuZCBhZ2VudGljIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo2MCxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fSxcInByb1wiOntcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInJlYXNvbmluZ1wiOntcIm1vZGVcIjpcInByb1wifX19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fX19LFwiZ3B0LTUtY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUtY29kZXhcIixcIm5hbWVcIjpcIkdQVC01LUNvZGV4XCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjItY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUuMi1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUuMiBDb2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGUtc3BlY2lhbGlzdCBHUFQgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBsb25nLXJ1bm5pbmcgc29mdHdhcmUgYWdlbnRzXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC1pbWFnZS0yXCI6e1wiaWRcIjpcImdwdC1pbWFnZS0yXCIsXCJuYW1lXCI6XCJncHQtaW1hZ2UtMlwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMjFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0yMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtNS4xXCI6e1wiaWRcIjpcImdwdC01LjFcIixcIm5hbWVcIjpcIkdQVC01LjFcIixcImRlc2NyaXB0aW9uXCI6XCJTaGFycGVyIEdQVC01IGdlbmVyYXRpb24gZm9yIGNvZGluZywgcHJvZHVjdCB3b3JrLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS41XCI6e1wiaWRcIjpcImdwdC01LjVcIixcIm5hbWVcIjpcIkdQVC01LjVcIixcImRlc2NyaXB0aW9uXCI6XCJEZWZhdWx0IGZyb250aWVyIEdQVCBmb3IgY29kaW5nLCBjb21wdXRlciB1c2UsIHJlc2VhcmNoLCBhbmQga25vd2xlZGdlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMTItMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0yM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTIzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjoxMi41LFwib3V0cHV0XCI6NzUsXCJjYWNoZV9yZWFkXCI6MS4yNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MX19fX19LFwieGFpXCI6e1wibW9kZWxzXCI6e1wiZ3Jvay00LjIwLW11bHRpLWFnZW50LTAzMDlcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLW11bHRpLWFnZW50LTAzMDlcIixcIm5hbWVcIjpcIkdyb2sgNC4yMCBNdWx0aS1BZ2VudFwiLFwiZGVzY3JpcHRpb25cIjpcIkdyb2sgbW9kZWwgZm9yIGFnZW50aWMgdG9vbCB1c2UsIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbGl2ZSBhc3Npc3RhbmNlXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2stNC4yMC0wMzA5LW5vbi1yZWFzb25pbmdcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLTAzMDktbm9uLXJlYXNvbmluZ1wiLFwibmFtZVwiOlwiR3JvayA0LjIwIChOb24tUmVhc29uaW5nKVwiLFwiZGVzY3JpcHRpb25cIjpcIkdyb2sgbW9kZWwgZm9yIGFnZW50aWMgdG9vbCB1c2UsIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbGl2ZSBhc3Npc3RhbmNlXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjMwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ3Jvay00LjNcIjp7XCJpZFwiOlwiZ3Jvay00LjNcIixcIm5hbWVcIjpcIkdyb2sgNC4zXCIsXCJkZXNjcmlwdGlvblwiOlwieEFJJ3MgR3JvayBmb3IgY2hhdCwgY29kaW5nLCBhZ2VudGljIHRvb2xzLCBhbmQgbG93ZXIgaGFsbHVjaW5hdGlvbiByaXNrXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MzAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJncm9rLWltYWdpbmUtaW1hZ2UtcXVhbGl0eVwiOntcImlkXCI6XCJncm9rLWltYWdpbmUtaW1hZ2UtcXVhbGl0eVwiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIEltYWdlIFF1YWxpdHlcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1wiaW1hZ2VcIixcInBkZlwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgwMDAsXCJvdXRwdXRcIjowfX0sXCJncm9rLWltYWdpbmUtdmlkZW9cIjp7XCJpZFwiOlwiZ3Jvay1pbWFnaW5lLXZpZGVvXCIsXCJuYW1lXCI6XCJHcm9rIEltYWdpbmUgVmlkZW9cIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMS0yOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAxLTI4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInZpZGVvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAyNCxcIm91dHB1dFwiOjB9fSxcImdyb2stNC41XCI6e1wiaWRcIjpcImdyb2stNC41XCIsXCJuYW1lXCI6XCJHcm9rIDQuNVwiLFwiZGVzY3JpcHRpb25cIjpcInhBSSdzIGxhdGVzdCBHcm9rIGZvciBjaGF0LCBjb2RpbmcsIGFnZW50aWMgdG9vbHMsIGFuZCBsb3dlciBoYWxsdWNpbmF0aW9uIHJpc2tcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNy0wOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA3LTA4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjUwMDAwMCxcIm91dHB1dFwiOjUwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6NixcImNhY2hlX3JlYWRcIjowLjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjoxLFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjF9fX0sXCJncm9rLTQuMjAtMDMwOS1yZWFzb25pbmdcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLTAzMDktcmVhc29uaW5nXCIsXCJuYW1lXCI6XCJHcm9rIDQuMjAgKFJlYXNvbmluZylcIixcImRlc2NyaXB0aW9uXCI6XCJSZWFzb25pbmcgR3JvayBmb3IgZG9jdW1lbnQtaGVhdnkgYW5hbHlzaXMgYW5kIGxvbmctaG9yaXpvbiB0b29sIHVzZVwiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2staW1hZ2luZS1pbWFnZVwiOntcImlkXCI6XCJncm9rLWltYWdpbmUtaW1hZ2VcIixcIm5hbWVcIjpcIkdyb2sgSW1hZ2luZSBJbWFnZVwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAxLTI4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDEtMjhcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJpbWFnZVwiLFwicGRmXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODAwMCxcIm91dHB1dFwiOjB9fSxcImdyb2stYnVpbGQtMC4xXCI6e1wiaWRcIjpcImdyb2stYnVpbGQtMC4xXCIsXCJuYW1lXCI6XCJHcm9rIEJ1aWxkIDAuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR3JvayBjb2RpbmcgbW9kZWwgdHVuZWQgZm9yIGFnZW50aWMgZW5naW5lZXJpbmcgYW5kIGl0ZXJhdGl2ZSBlZGl0c1wiLFwiZmFtaWx5XCI6XCJncm9rLWJ1aWxkXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjI1NjAwMCxcIm91dHB1dFwiOjI1NjAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6MixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo0LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo0LFwiY2FjaGVfcmVhZFwiOjAuNH19fX19fSIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCBzbmFwc2hvdCBmcm9tICcuL2NhdGFsb2ctc25hcHNob3QuanNvbicgd2l0aCB7IHR5cGU6ICdqc29uJyB9XG5cbmNvbnN0IENBVEFMT0dfVVJMID0gJ2h0dHBzOi8vbW9kZWxzLmRldi9hcGkuanNvbidcbmNvbnN0IFNVUFBPUlRFRCA9IFsnZ29vZ2xlJywgJ2FudGhyb3BpYycsICdvcGVuYWknLCAneGFpJ11cbmNvbnN0IFRUTCA9IDI0ICogNjAgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gY2FjaGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnbW9kZWxzLWNhY2hlLmpzb24nKVxufVxuXG5mdW5jdGlvbiBzdWJzZXQoZGF0YSkge1xuICBjb25zdCBvdXQgPSB7fVxuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIFNVUFBPUlRFRCkge1xuICAgIGlmIChkYXRhW3Byb3ZpZGVyXT8ubW9kZWxzKSBvdXRbcHJvdmlkZXJdID0geyBtb2RlbHM6IGRhdGFbcHJvdmlkZXJdLm1vZGVscyB9XG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ2FjaGUoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY2FjaGVGaWxlKCksICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWZyZXNoQ2F0YWxvZyh7IGZldGNoZXIgPSBmZXRjaCB9ID0ge30pIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaGVyKENBVEFMT0dfVVJMKVxuICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoYGNhdGFsb2cgZmV0Y2ggZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICBjb25zdCBwcm92aWRlcnMgPSBzdWJzZXQoYXdhaXQgcmVzcG9uc2UuanNvbigpKVxuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKGNhY2hlRmlsZSgpLCBKU09OLnN0cmluZ2lmeSh7IGF0OiBEYXRlLm5vdygpLCBwcm92aWRlcnMgfSkpXG4gIHJldHVybiBwcm92aWRlcnNcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRDYXRhbG9nKHsgZmV0Y2hlciA9IGZldGNoIH0gPSB7fSkge1xuICBjb25zdCBjYWNoZWQgPSBhd2FpdCByZWFkQ2FjaGUoKVxuICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQuYXQgPCBUVEwpIHJldHVybiBjYWNoZWQucHJvdmlkZXJzXG4gIHJlZnJlc2hDYXRhbG9nKHsgZmV0Y2hlciB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgcmV0dXJuIGNhY2hlZD8ucHJvdmlkZXJzIHx8IHNuYXBzaG90XG59XG5cbmNvbnN0IHRleHRNb2RlbCA9IChtKSA9PlxuICBtLnRvb2xfY2FsbCA9PT0gdHJ1ZSAmJlxuICAoIW0ubW9kYWxpdGllcyB8fCAobS5tb2RhbGl0aWVzLmlucHV0Py5pbmNsdWRlcygndGV4dCcpICYmIG0ubW9kYWxpdGllcy5vdXRwdXQ/LmluY2x1ZGVzKCd0ZXh0JykpKVxuXG5jb25zdCBkYXRlZER1cGxpY2F0ZSA9IChpZCkgPT4gLy1cXGR7OH0kLy50ZXN0KGlkKVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE1vZGVscyhwcm92aWRlcnMsIHByb3ZpZGVySWRzKSB7XG4gIGNvbnN0IG9yZGVyID0gU1VQUE9SVEVELmZpbHRlcigocCkgPT4gcHJvdmlkZXJJZHMuaW5jbHVkZXMocCkpXG4gIGNvbnN0IG1vZGVscyA9IFtdXG4gIGZvciAoY29uc3QgcHJvdmlkZXIgb2Ygb3JkZXIpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocHJvdmlkZXJzW3Byb3ZpZGVyXT8ubW9kZWxzIHx8IHt9KVxuICAgICAgLmZpbHRlcigoW2lkLCBtXSkgPT4gdGV4dE1vZGVsKG0pICYmICFkYXRlZER1cGxpY2F0ZShpZCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gU3RyaW5nKGJbMV0ucmVsZWFzZV9kYXRlIHx8ICcnKS5sb2NhbGVDb21wYXJlKFN0cmluZyhhWzFdLnJlbGVhc2VfZGF0ZSB8fCAnJykpKVxuICAgIGZvciAoY29uc3QgW2lkLCBtXSBvZiBlbnRyaWVzKSB7XG4gICAgICBtb2RlbHMucHVzaCh7XG4gICAgICAgIG5hbWU6IGAke3Byb3ZpZGVyfS8ke2lkfWAsXG4gICAgICAgIHByb3ZpZGVyLFxuICAgICAgICBkZXNjOiBtLmRlc2NyaXB0aW9uIHx8IG0ubmFtZSB8fCBpZCxcbiAgICAgICAgcHJpY2U6IG0uY29zdCAmJiBtLmNvc3QuaW5wdXQgIT0gbnVsbCA/IHsgaW46IG0uY29zdC5pbnB1dCwgb3V0OiBtLmNvc3Qub3V0cHV0IH0gOiBudWxsLFxuICAgICAgICBlZmZvcnQ6ICEhbS5yZWFzb25pbmcsXG4gICAgICAgIC8vIHRoZSBtZWFzdXJlZCBmaWxsIG51bWJlciBpcyBpbnB1dCB0b2tlbnMsIHNvIHByZWZlciB0aGUgaW5wdXQgbGltaXRcbiAgICAgICAgLy8gYXMgdGhlIGRlbm9taW5hdG9yIHdoZXJlIHRoZSBwcm92aWRlciBkaXN0aW5ndWlzaGVzIGl0XG4gICAgICAgIGNvbnRleHQ6IG0ubGltaXQ/LmlucHV0IHx8IG0ubGltaXQ/LmNvbnRleHQgfHwgbnVsbCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RlbHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkaG9jTW9kZWwobmFtZSwgcHJvdmlkZXJJZHMpIHtcbiAgY29uc3QgbWF0Y2ggPSBuYW1lLm1hdGNoKC9eKFthLXowLTktXSspXFwvKC4rKSQvKVxuICBpZiAoIW1hdGNoIHx8ICFwcm92aWRlcklkcy5pbmNsdWRlcyhtYXRjaFsxXSkpIHJldHVybiBudWxsXG4gIHJldHVybiB7XG4gICAgbmFtZSxcbiAgICBwcm92aWRlcjogbWF0Y2hbMV0sXG4gICAgZGVzYzogJ25vdCBpbiBjYXRhbG9nJyxcbiAgICBwcmljZTogbnVsbCxcbiAgICBlZmZvcnQ6IGZhbHNlLFxuICAgIGNvbnRleHQ6IG51bGwsXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuLy8gdGhlIGJhY2tlbmQgaGlkZXMgbW9kZWxzIGZyb20gY2xpZW50cyBiZWxvdyBhIHZlcnNpb24gZmxvb3IsIHNvIHNlbmQgYVxuLy8gdmVyc2lvbiBjb21mb3J0YWJseSBhYm92ZSBpdFxuY29uc3QgTU9ERUxTX1VSTCA9ICdodHRwczovL2NoYXRncHQuY29tL2JhY2tlbmQtYXBpL2NvZGV4L21vZGVscz9jbGllbnRfdmVyc2lvbj0yLjAuMCdcbmNvbnN0IFRUTCA9IDI0ICogNjAgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gY2FjaGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnY29kZXgtbW9kZWxzLWNhY2hlLmpzb24nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwQ29kZXhNb2RlbHMoZW50cmllcykge1xuICByZXR1cm4gZW50cmllcy5tYXAoKG0pID0+ICh7XG4gICAgbmFtZTogYGNvZGV4LyR7bS5zbHVnfWAsXG4gICAgcHJvdmlkZXI6ICdjb2RleCcsXG4gICAgZGVzYzogYCR7bS5kZXNjcmlwdGlvbiB8fCBtLmxhYmVsIHx8IG0uc2x1Z30gXHUwMEI3IHZpYSBDaGF0R1BUIHBsYW5gLFxuICAgIHByaWNlOiBudWxsLFxuICAgIGVmZm9ydDogdHJ1ZSxcbiAgICBjb250ZXh0OiBtLmNvbnRleHRfd2luZG93IHx8IG51bGwsXG4gIH0pKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENvZGV4TW9kZWxzKGNyZWRlbnRpYWxzKSB7XG4gIGxldCBjYWNoZWQgPSBudWxsXG4gIHRyeSB7XG4gICAgY2FjaGVkID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYWNoZUZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge31cbiAgaWYgKGNhY2hlZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLmF0IDwgVFRMKSByZXR1cm4gbWFwQ29kZXhNb2RlbHMoY2FjaGVkLm1vZGVscylcbiAgaWYgKCFjcmVkZW50aWFscykgcmV0dXJuIG1hcENvZGV4TW9kZWxzKGNhY2hlZD8ubW9kZWxzIHx8IFtdKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChNT0RFTFNfVVJMLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtjcmVkZW50aWFscy5hcGlLZXl9YCxcbiAgICAgICAgLi4uY3JlZGVudGlhbHMuaGVhZGVycyxcbiAgICAgICAgb3JpZ2luYXRvcjogJ2NvZGV4X2NsaV9ycycsXG4gICAgICB9LFxuICAgIH0pXG4gICAgaWYgKCFyZXNwb25zZS5vaykgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhyZXNwb25zZS5zdGF0dXMpKVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBjb25zdCBtb2RlbHMgPSAoZGF0YS5tb2RlbHMgfHwgW10pLm1hcCgobSkgPT4gKHtcbiAgICAgIHNsdWc6IG0uc2x1ZyxcbiAgICAgIGRlc2NyaXB0aW9uOiBtLmRlc2NyaXB0aW9uLFxuICAgICAgbGFiZWw6IG0ubGFiZWwgfHwgbS5kaXNwbGF5X25hbWUsXG4gICAgICBjb250ZXh0X3dpbmRvdzogbS5jb250ZXh0X3dpbmRvdyB8fCBtLm1heF9jb250ZXh0X3dpbmRvdyB8fCBudWxsLFxuICAgIH0pKVxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2VtcHR5IG1vZGVsIGxpc3QnKVxuICAgIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICAgIGF3YWl0IHdyaXRlRmlsZShjYWNoZUZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoeyBhdDogRGF0ZS5ub3coKSwgbW9kZWxzIH0pKVxuICAgIHJldHVybiBtYXBDb2RleE1vZGVscyhtb2RlbHMpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBtYXBDb2RleE1vZGVscyhjYWNoZWQ/Lm1vZGVscyB8fCBbXSlcbiAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNlcnZlciB9IGZyb20gJ25vZGU6aHR0cCdcbmltcG9ydCB7IHJhbmRvbUJ5dGVzLCBjcmVhdGVIYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5pbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUsIGNobW9kIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuY29uc3QgQ0xJRU5UX0lEID0gJ2FwcF9FTW9hbUVFWjczZjBDa1hhWHA3aHJhbm4nXG5jb25zdCBBVVRIX1VSTCA9ICdodHRwczovL2F1dGgub3BlbmFpLmNvbS9vYXV0aC9hdXRob3JpemUnXG5jb25zdCBUT0tFTl9VUkwgPSAnaHR0cHM6Ly9hdXRoLm9wZW5haS5jb20vb2F1dGgvdG9rZW4nXG5jb25zdCBSRURJUkVDVF9QT1JUID0gMTQ1NVxuY29uc3QgUkVESVJFQ1RfVVJJID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRURJUkVDVF9QT1JUfS9hdXRoL2NhbGxiYWNrYFxuY29uc3QgU0NPUEUgPSAnb3BlbmlkIHByb2ZpbGUgZW1haWwgb2ZmbGluZV9hY2Nlc3MnXG5jb25zdCBSRUZSRVNIX1NLRVdfTVMgPSA1ICogNjAgKiAxMDAwXG5cbmZ1bmN0aW9uIGF1dGhGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnYXV0aC5qc29uJylcbn1cblxuZnVuY3Rpb24gYmFzZTY0dXJsKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKS5yZXBsYWNlKC9cXCsvZywgJy0nKS5yZXBsYWNlKC9cXC8vZywgJ18nKS5yZXBsYWNlKC89KyQvLCAnJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUp3dENsYWltcyh0b2tlbikge1xuICB0cnkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB0b2tlbi5zcGxpdCgnLicpWzFdXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoQnVmZmVyLmZyb20ocGF5bG9hZCwgJ2Jhc2U2NHVybCcpLnRvU3RyaW5nKCd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWNjb3VudElkRnJvbUNsYWltcyhjbGFpbXMpIHtcbiAgcmV0dXJuIGNsYWltc1snaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS9hdXRoJ10/LmNoYXRncHRfYWNjb3VudF9pZCB8fCBjbGFpbXMuY2hhdGdwdF9hY2NvdW50X2lkIHx8IG51bGxcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEF1dGgoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoYXV0aEZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7fVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQXV0aChhdXRoKSB7XG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoYXV0aEZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoYXV0aCwgbnVsbCwgMikgKyAnXFxuJylcbiAgYXdhaXQgY2htb2QoYXV0aEZpbGUoKSwgMG82MDApXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRva2VuUmVxdWVzdChwYXJhbXMpIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChUT0tFTl9VUkwsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9LFxuICAgIGJvZHk6IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKS50b1N0cmluZygpLFxuICB9KVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0b2tlbiByZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9ICR7YXdhaXQgcmVzcG9uc2UudGV4dCgpfWApXG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKVxufVxuXG5mdW5jdGlvbiBzdG9yZVRva2VucyhhdXRoLCB0b2tlbnMpIHtcbiAgY29uc3QgY2xhaW1zID0gdG9rZW5zLmlkX3Rva2VuID8gZGVjb2RlSnd0Q2xhaW1zKHRva2Vucy5pZF90b2tlbikgOiB7fVxuICBhdXRoLm9wZW5haSA9IHtcbiAgICBhY2Nlc3NfdG9rZW46IHRva2Vucy5hY2Nlc3NfdG9rZW4sXG4gICAgcmVmcmVzaF90b2tlbjogdG9rZW5zLnJlZnJlc2hfdG9rZW4gfHwgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4sXG4gICAgaWRfdG9rZW46IHRva2Vucy5pZF90b2tlbiB8fCBhdXRoLm9wZW5haT8uaWRfdG9rZW4sXG4gICAgYWNjb3VudF9pZDogYWNjb3VudElkRnJvbUNsYWltcyhjbGFpbXMpIHx8IGF1dGgub3BlbmFpPy5hY2NvdW50X2lkIHx8IG51bGwsXG4gICAgZW1haWw6IGNsYWltcy5lbWFpbCB8fCBhdXRoLm9wZW5haT8uZW1haWwgfHwgbnVsbCxcbiAgICBleHBpcmVzX2F0OiBEYXRlLm5vdygpICsgKHRva2Vucy5leHBpcmVzX2luIHx8IDM2MDApICogMTAwMCxcbiAgfVxuICByZXR1cm4gYXV0aFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29ubmVjdE9wZW5BSSh7IG9wZW5Ccm93c2VyID0gdHJ1ZSwgdGltZW91dE1zID0gNSAqIDYwICogMTAwMCwgb25VcmwgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3QgdmVyaWZpZXIgPSBiYXNlNjR1cmwocmFuZG9tQnl0ZXMoNjQpKVxuICBjb25zdCBjaGFsbGVuZ2UgPSBiYXNlNjR1cmwoY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZlcmlmaWVyKS5kaWdlc3QoKSlcbiAgY29uc3Qgc3RhdGUgPSBiYXNlNjR1cmwocmFuZG9tQnl0ZXMoMjQpKVxuXG4gIGNvbnN0IHVybCA9IGAke0FVVEhfVVJMfT8ke25ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgIHJlc3BvbnNlX3R5cGU6ICdjb2RlJyxcbiAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICByZWRpcmVjdF91cmk6IFJFRElSRUNUX1VSSSxcbiAgICBzY29wZTogU0NPUEUsXG4gICAgY29kZV9jaGFsbGVuZ2U6IGNoYWxsZW5nZSxcbiAgICBjb2RlX2NoYWxsZW5nZV9tZXRob2Q6ICdTMjU2JyxcbiAgICBzdGF0ZSxcbiAgICBwcm9tcHQ6ICdsb2dpbicsXG4gICAgaWRfdG9rZW5fYWRkX29yZ2FuaXphdGlvbnM6ICd0cnVlJyxcbiAgICBjb2RleF9jbGlfc2ltcGxpZmllZF9mbG93OiAndHJ1ZScsXG4gICAgb3JpZ2luYXRvcjogJ2NvZGV4X2NsaV9ycycsXG4gIH0pLnRvU3RyaW5nKCl9YFxuXG4gIGNvbnN0IGNvZGUgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc2VydmVyID0gY3JlYXRlU2VydmVyKChyZXEsIHJlcykgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdFVybCA9IG5ldyBVUkwocmVxLnVybCwgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRURJUkVDVF9QT1JUfWApXG4gICAgICBpZiAocmVxdWVzdFVybC5wYXRobmFtZSAhPT0gJy9hdXRoL2NhbGxiYWNrJykge1xuICAgICAgICByZXMud3JpdGVIZWFkKDQwNCkuZW5kKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBnb3RTdGF0ZSA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnc3RhdGUnKVxuICAgICAgY29uc3QgZ290Q29kZSA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnY29kZScpXG4gICAgICBjb25zdCBnb3RFcnJvciA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnZXJyb3InKVxuICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pXG4gICAgICByZXMuZW5kKFxuICAgICAgICBnb3RDb2RlICYmIGdvdFN0YXRlID09PSBzdGF0ZVxuICAgICAgICAgID8gJzxodG1sPjxib2R5IHN0eWxlPVwiZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IHBhZGRpbmc6IDJyZW1cIj5zaWduZWQgaW4gLSB5b3UgY2FuIHJldHVybiB0byBwaWNvPC9ib2R5PjwvaHRtbD4nXG4gICAgICAgICAgOiAnPGh0bWw+PGJvZHkgc3R5bGU9XCJmb250LWZhbWlseTogc2Fucy1zZXJpZjsgcGFkZGluZzogMnJlbVwiPnNpZ24taW4gZmFpbGVkIC0gcmV0dXJuIHRvIHBpY28gYW5kIHRyeSBhZ2FpbjwvYm9keT48L2h0bWw+JyxcbiAgICAgIClcbiAgICAgIGNsZWFudXAoKVxuICAgICAgaWYgKGdvdEVycm9yKSByZWplY3QobmV3IEVycm9yKGBhdXRob3JpemF0aW9uIGZhaWxlZDogJHtnb3RFcnJvcn1gKSlcbiAgICAgIGVsc2UgaWYgKCFnb3RDb2RlIHx8IGdvdFN0YXRlICE9PSBzdGF0ZSkgcmVqZWN0KG5ldyBFcnJvcignYXV0aG9yaXphdGlvbiBmYWlsZWQ6IG1pc3NpbmcgY29kZSBvciBzdGF0ZSBtaXNtYXRjaCcpKVxuICAgICAgZWxzZSByZXNvbHZlKGdvdENvZGUpXG4gICAgfSlcblxuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhbnVwKClcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoJ3NpZ24taW4gdGltZWQgb3V0JykpXG4gICAgfSwgdGltZW91dE1zKVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgIHNlcnZlci5jbG9zZSgpXG4gICAgfVxuXG4gICAgc2VydmVyLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGNsZWFudXAoKVxuICAgICAgcmVqZWN0KGVyci5jb2RlID09PSAnRUFERFJJTlVTRScgPyBuZXcgRXJyb3IoYHBvcnQgJHtSRURJUkVDVF9QT1JUfSBpcyBpbiB1c2UgKGlzIGFub3RoZXIgc2lnbi1pbiBvciBjb2RleCBydW5uaW5nPylgKSA6IGVycilcbiAgICB9KVxuICAgIHNlcnZlci5saXN0ZW4oUkVESVJFQ1RfUE9SVCwgJzEyNy4wLjAuMScsICgpID0+IHtcbiAgICAgIG9uVXJsKHVybClcbiAgICAgIGlmIChvcGVuQnJvd3NlcikgZXhlY0ZpbGUoJ29wZW4nLCBbdXJsXSwgKCkgPT4ge30pXG4gICAgfSlcbiAgfSlcblxuICBjb25zdCB0b2tlbnMgPSBhd2FpdCB0b2tlblJlcXVlc3Qoe1xuICAgIGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxuICAgIGNvZGUsXG4gICAgcmVkaXJlY3RfdXJpOiBSRURJUkVDVF9VUkksXG4gICAgY2xpZW50X2lkOiBDTElFTlRfSUQsXG4gICAgY29kZV92ZXJpZmllcjogdmVyaWZpZXIsXG4gIH0pXG5cbiAgY29uc3QgYXV0aCA9IHN0b3JlVG9rZW5zKGF3YWl0IHJlYWRBdXRoKCksIHRva2VucylcbiAgYXdhaXQgd3JpdGVBdXRoKGF1dGgpXG4gIHJldHVybiB7IGVtYWlsOiBhdXRoLm9wZW5haS5lbWFpbCwgYWNjb3VudElkOiBhdXRoLm9wZW5haS5hY2NvdW50X2lkIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haUNyZWRlbnRpYWxzKCkge1xuICBjb25zdCBhdXRoID0gYXdhaXQgcmVhZEF1dGgoKVxuICBjb25zdCBzdG9yZWQgPSBhdXRoLm9wZW5haVxuICBpZiAoIXN0b3JlZD8uYWNjZXNzX3Rva2VuKSByZXR1cm4gbnVsbFxuXG4gIGlmIChEYXRlLm5vdygpID4gKHN0b3JlZC5leHBpcmVzX2F0IHx8IDApIC0gUkVGUkVTSF9TS0VXX01TKSB7XG4gICAgaWYgKCFzdG9yZWQucmVmcmVzaF90b2tlbikgcmV0dXJuIG51bGxcbiAgICBjb25zdCB0b2tlbnMgPSBhd2FpdCB0b2tlblJlcXVlc3Qoe1xuICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgcmVmcmVzaF90b2tlbjogc3RvcmVkLnJlZnJlc2hfdG9rZW4sXG4gICAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICAgIHNjb3BlOiAnb3BlbmlkIHByb2ZpbGUgZW1haWwnLFxuICAgIH0pXG4gICAgY29uc3QgcmVmcmVzaGVkID0gc3RvcmVUb2tlbnMoYXV0aCwgdG9rZW5zKVxuICAgIGF3YWl0IHdyaXRlQXV0aChyZWZyZXNoZWQpXG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzRnJvbShyZWZyZXNoZWQub3BlbmFpKVxuICB9XG4gIHJldHVybiBjcmVkZW50aWFsc0Zyb20oc3RvcmVkKVxufVxuXG5mdW5jdGlvbiBjcmVkZW50aWFsc0Zyb20oc3RvcmVkKSB7XG4gIHJldHVybiB7XG4gICAgYXBpS2V5OiBzdG9yZWQuYWNjZXNzX3Rva2VuLFxuICAgIGhlYWRlcnM6IHN0b3JlZC5hY2NvdW50X2lkID8geyAnY2hhdGdwdC1hY2NvdW50LWlkJzogc3RvcmVkLmFjY291bnRfaWQgfSA6IHt9LFxuICAgIGVtYWlsOiBzdG9yZWQuZW1haWwsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haUNvbm5lY3RlZCgpIHtcbiAgY29uc3QgYXV0aCA9IGF3YWl0IHJlYWRBdXRoKClcbiAgcmV0dXJuICEhKGF1dGgub3BlbmFpPy5hY2Nlc3NfdG9rZW4gJiYgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuYWlTdGF0dXMoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIHJldHVybiB7XG4gICAgY29ubmVjdGVkOiAhIShhdXRoLm9wZW5haT8uYWNjZXNzX3Rva2VuICYmIGF1dGgub3BlbmFpPy5yZWZyZXNoX3Rva2VuKSxcbiAgICBlbWFpbDogYXV0aC5vcGVuYWk/LmVtYWlsIHx8IG51bGwsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3RPcGVuQUkoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIGRlbGV0ZSBhdXRoLm9wZW5haVxuICBhd2FpdCB3cml0ZUF1dGgoYXV0aClcbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gY29uZmlnRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ2NvbmZpZy5qc29uJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDb25maWcoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY29uZmlnRmlsZSgpLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29uZmlnKHBhdGNoKSB7XG4gIGNvbnN0IGNvbmZpZyA9IHsgLi4uKGF3YWl0IHJlYWRDb25maWcoKSksIC4uLnBhdGNoIH1cbiAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gIGF3YWl0IHdyaXRlRmlsZShjb25maWdGaWxlKCksIEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMikgKyAnXFxuJylcbiAgcmV0dXJuIGNvbmZpZ1xufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBnbG9iYWxBZ2VudHNGaWxlIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gcmVhZElmRXhpc3RzKHBhdGgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXhpc3RzU3luYyhwYXRoKSA/IHJlYWRGaWxlU3luYyhwYXRoLCAndXRmLTgnKSA6IG51bGxcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGV4dFN0b3BEaXIoY3dkKSB7XG4gIGxldCBkaXIgPSByZXNvbHZlKGN3ZClcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChleGlzdHNTeW5jKGpvaW4oZGlyLCAnLmdpdCcpKSB8fCBkaXIgPT09IGhvbWUpIHJldHVybiBkaXJcbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcilcbiAgICBpZiAocGFyZW50ID09PSBkaXIpIHJldHVybiByZXNvbHZlKGN3ZClcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxufVxuXG5mdW5jdGlvbiBhbmNlc3RvckRpcnMoY3dkLCBzdG9wRGlyKSB7XG4gIGNvbnN0IGRpcnMgPSBbXVxuICBsZXQgZGlyID0gcmVzb2x2ZShjd2QpXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgZGlycy51bnNoaWZ0KGRpcilcbiAgICBpZiAoZGlyID09PSBzdG9wRGlyKSBicmVha1xuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKVxuICAgIGlmIChwYXJlbnQgPT09IGRpcikgYnJlYWtcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxuICByZXR1cm4gZGlyc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFN0YXJ0dXBDb250ZXh0KGN3ZCkge1xuICBjb25zdCBzdG9wRGlyID0gY29udGV4dFN0b3BEaXIoY3dkKVxuICBjb25zdCBmaWxlcyA9IFtdXG4gIGNvbnN0IGdsb2JhbENvbnRlbnQgPSByZWFkSWZFeGlzdHMoZ2xvYmFsQWdlbnRzRmlsZSgpKVxuICBpZiAoZ2xvYmFsQ29udGVudCkgZmlsZXMucHVzaCh7IHBhdGg6IGdsb2JhbEFnZW50c0ZpbGUoKSwgY29udGVudDogZ2xvYmFsQ29udGVudCB9KVxuICBmb3IgKGNvbnN0IGRpciBvZiBhbmNlc3RvckRpcnMoY3dkLCBzdG9wRGlyKSkge1xuICAgIGNvbnN0IHBhdGggPSBqb2luKGRpciwgJ0FHRU5UUy5tZCcpXG4gICAgY29uc3QgY29udGVudCA9IHJlYWRJZkV4aXN0cyhwYXRoKVxuICAgIGlmIChjb250ZW50KSBmaWxlcy5wdXNoKHsgcGF0aCwgY29udGVudCB9KVxuICB9XG4gIHJldHVybiB7IGZpbGVzLCBzdG9wRGlyIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHRUcmFja2VyKHsgc3RvcERpciwgbG9hZGVkIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBsb2FkZWQsXG4gICAgY2hlY2soZmlsZVBhdGgpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGRpcm5hbWUocmVzb2x2ZShmaWxlUGF0aCkpXG4gICAgICBpZiAoIXRhcmdldC5zdGFydHNXaXRoKHN0b3BEaXIpKSByZXR1cm4gW11cbiAgICAgIGNvbnN0IGZyZXNoID0gW11cbiAgICAgIGZvciAoY29uc3QgZGlyIG9mIGFuY2VzdG9yRGlycyh0YXJnZXQsIHN0b3BEaXIpKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBqb2luKGRpciwgJ0FHRU5UUy5tZCcpXG4gICAgICAgIGlmIChsb2FkZWQuaGFzKHBhdGgpKSBjb250aW51ZVxuICAgICAgICBjb25zdCBjb250ZW50ID0gcmVhZElmRXhpc3RzKHBhdGgpXG4gICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgbG9hZGVkLmFkZChwYXRoKVxuICAgICAgICAgIGZyZXNoLnB1c2goeyBwYXRoLCBjb250ZW50IH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmcmVzaFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgcmVhZGRpciB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgZ2xvYmFsU2tpbGxzRGlyLCBwcm9qZWN0U2tpbGxzRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXIodGV4dCkge1xuICBjb25zdCBtYXRjaCA9IHRleHQubWF0Y2goL14tLS1cXG4oW1xcc1xcU10qPylcXG4tLS1cXG4/LylcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIHsgbWV0YToge30sIGJvZHk6IHRleHQgfVxuICBjb25zdCBtZXRhID0ge31cbiAgZm9yIChjb25zdCBsaW5lIG9mIG1hdGNoWzFdLnNwbGl0KCdcXG4nKSkge1xuICAgIGNvbnN0IHNlcCA9IGxpbmUuaW5kZXhPZignOicpXG4gICAgaWYgKHNlcCA9PT0gLTEpIGNvbnRpbnVlXG4gICAgbWV0YVtsaW5lLnNsaWNlKDAsIHNlcCkudHJpbSgpXSA9IGxpbmUuc2xpY2Uoc2VwICsgMSkudHJpbSgpXG4gIH1cbiAgcmV0dXJuIHsgbWV0YSwgYm9keTogdGV4dC5zbGljZShtYXRjaFswXS5sZW5ndGgpIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNvdXJjZSkge1xuICBsZXQgbmFtZXMgPSBbXVxuICB0cnkge1xuICAgIG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxuICBjb25zdCBza2lsbHMgPSBbXVxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIG5hbWVzKSB7XG4gICAgaWYgKCFlbnRyeS5pc0RpcmVjdG9yeSgpKSBjb250aW51ZVxuICAgIGNvbnN0IGZpbGUgPSBqb2luKGRpciwgZW50cnkubmFtZSwgJ1NLSUxMLm1kJylcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBtZXRhIH0gPSBwYXJzZUZyb250bWF0dGVyKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICAgICAgc2tpbGxzLnB1c2goe1xuICAgICAgICBuYW1lOiBtZXRhLm5hbWUgfHwgZW50cnkubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGEuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgZmlsZSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBza2lsbHNcbn1cblxuY29uc3QgQVNLX1JVTEUgPSBgQmVmb3JlIHdyaXRpbmcgYW55dGhpbmcsIHJlc29sdmUgYW1iaWd1aXR5OlxuLSBJZiB0aGUgdXNlciBkaWQgbm90IHNheSBnbG9iYWwgb3IgcHJvamVjdCwgYXNrIGV4YWN0bHkgb25lIHF1ZXN0aW9uOiBcImdsb2JhbCAoYXZhaWxhYmxlIGV2ZXJ5d2hlcmUpIG9yIGp1c3QgdGhpcyBwcm9qZWN0P1wiIERvIG5vdCBndWVzcyBzaWxlbnRseS5cbi0gSWYgdGhlIGJlaGF2aW9yIG9yIG91dHB1dCBpcyB1bmRlcnNwZWNpZmllZCwgc3RhdGUgdGhlIGFzc3VtcHRpb25zIHlvdSBhcmUgbWFraW5nIGluIG9uZSBzaG9ydCBsaW5lIGJlZm9yZSBwcm9jZWVkaW5nLCBzbyB0aGUgdXNlciBjYW4gY29ycmVjdCB5b3UuYFxuXG5jb25zdCBORVdfVE9PTF9TS0lMTCA9IGBDcmVhdGUgYSBjdXN0b20gcGljbyB0b29sIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBwaWNvIHRvb2wgaXMgYW4gRVMgbW9kdWxlIHdob3NlIGRlZmF1bHQgZXhwb3J0IGlzIGVpdGhlciBhIHRvb2wgb2JqZWN0IG9yIGEgZmFjdG9yeVxuXFxgKGNvbnRleHQpID0+IHRvb2xcXGAgd2hlcmUgY29udGV4dCBpcyBcXGB7IGN3ZCwgcm9vdCB9XFxgLiBUaGUgdG9vbCBvYmplY3Qgc2hhcGU6XG5cblxcYFxcYFxcYGpzXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICd3b3JkX2NvdW50JyxcbiAgZGVzY3JpcHRpb246ICdDb3VudCB3b3JkcywgbGluZXMsIGFuZCBjaGFyYWN0ZXJzIGluIGEgZmlsZScsXG4gIHNjaGVtYToge1xuICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeScgfSxcbiAgICB3b3JkczogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnaW5jbHVkZSB3b3JkIGNvdW50Jywgb3B0aW9uYWw6IHRydWUgfSxcbiAgfSxcbiAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgd29yZHMgPSB0cnVlIH0pID0+IHtcbiAgICAvLyByZXR1cm4gYW55IEpTT04tc2VyaWFsaXphYmxlIHZhbHVlOyB0aHJvdyBhbiBFcnJvciB0byByZXBvcnQgZmFpbHVyZVxuICAgIHJldHVybiB7IHBhdGgsIHdvcmRzOiA0MiB9XG4gIH0sXG59XG5cXGBcXGBcXGBcblxuU2NoZW1hIHByb3BlcnRpZXMgc3VwcG9ydDogdHlwZSAoc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4sIGFycmF5LCBvYmplY3QpLCBkZXNjcmlwdGlvbixcbm9wdGlvbmFsLCBlbnVtIChzdHJpbmcgdmFsdWVzKSwgaXRlbXMgKGZvciBhcnJheXMpLCBwcm9wZXJ0aWVzIChmb3IgbmVzdGVkIG9iamVjdHMpLlxuXG5Mb2NhdGlvbnM6IFxcYC5waWNvL3Rvb2xzLzxuYW1lPi5qc1xcYCBpbiB0aGUgcHJvamVjdCByb290IGZvciBwcm9qZWN0IHRvb2xzLFxuXFxgfi8ucGljby90b29scy88bmFtZT4uanNcXGAgZm9yIHRvb2xzIGF2YWlsYWJsZSBldmVyeXdoZXJlLiBEZWZhdWx0IHRvIHRoZSBwcm9qZWN0IHVubGVzc1xudGhlIHVzZXIgYXNrcyBmb3IgYSBnbG9iYWwgdG9vbC4gTm9kZSBidWlsdGlucyBjYW4gYmUgaW1wb3J0ZWQ7IG5wbSBwYWNrYWdlcyBjYW5ub3QgYmVcbmFzc3VtZWQuIFRvb2xzIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gYSBuZXcgb3IgZWRpdGVkIHRvb2wgaXMgdXNhYmxlIG9uIHRoZSBuZXh0XG5tZXNzYWdlIHdpdGggbm8gcmVzdGFydC5cblxuU3RlcHM6XG4xLiBEZWNpZGUgdGhlIHRvb2wgbmFtZSAoc25ha2VfY2FzZSksIGlucHV0cywgYW5kIG91dHB1dCBzaGFwZSBmcm9tIHRoZSB1c2VyJ3MgcmVxdWVzdC5cbjIuIFdyaXRlIHRoZSBtb2R1bGUgdG8gdGhlIHJpZ2h0IGxvY2F0aW9uIHdpdGggdGhlIHdyaXRlIHRvb2wuXG4zLiBTYW5pdHktY2hlY2sgaXQgbG9hZHM6IFxcYG5vZGUgLS1pbnB1dC10eXBlPW1vZHVsZSAtZSBcImNvbnN0IHQgPSAoYXdhaXQgaW1wb3J0KCdmaWxlOi8vPGFicyBwYXRoPicpKS5kZWZhdWx0OyBjb25zb2xlLmxvZyh0Lm5hbWUpXCJcXGAgKGFkanVzdCBpZiB0aGUgZXhwb3J0IGlzIGEgZmFjdG9yeSkuXG40LiBUZWxsIHRoZSB1c2VyIHRoZSB0b29sIGlzIHJlYWR5IGFuZCB3aWxsIGJlIGF2YWlsYWJsZSBmcm9tIHRoZWlyIG5leHQgbWVzc2FnZS5gXG5cbmNvbnN0IE5FV19TS0lMTF9TS0lMTCA9IGBDcmVhdGUgYSBwaWNvIHNraWxsIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBza2lsbCBpcyBhIG1hcmtkb3duIGZpbGUgYXQgXFxgLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCAocHJvamVjdCkgb3JcblxcYH4vLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCAoZ2xvYmFsKSB3aXRoIGZyb250bWF0dGVyIGFuZCBhbiBpbnN0cnVjdGlvbiBib2R5OlxuXG5cXGBcXGBcXGBcbi0tLVxubmFtZTogcmVsZWFzZS1ub3Rlc1xuZGVzY3JpcHRpb246IGRyYWZ0IHJlbGVhc2Ugbm90ZXMgZnJvbSBjb21taXRzIHNpbmNlIHRoZSBsYXN0IHRhZ1xuLS0tXG5JbnN0cnVjdGlvbnMgdGhlIGFnZW50IGZvbGxvd3Mgd2hlbiB0aGlzIHNraWxsIGlzIGxvYWRlZC4gQmUgaW1wZXJhdGl2ZSBhbmQgc3BlY2lmaWMuXG5cXGBcXGBcXGBcblxuVGhlIGRlc2NyaXB0aW9uIG1hdHRlcnMgbW9zdDogaXQgaXMgbGlzdGVkIGluIHRoZSBhZ2VudCdzIHN5c3RlbSBwcm9tcHQsIGFuZCB0aGUgYWdlbnRcbmRlY2lkZXMgZnJvbSBpdCB3aGVuIHRvIGxvYWQgdGhlIHNraWxsIG9uIGl0cyBvd24uIFdyaXRlIGl0IGFzIGEgdHJpZ2dlciBjb25kaXRpb25cbihcIndoZW4gdGhlIHVzZXIgYXNrcyBmb3IgWFwiKSwgbm90IG1hcmtldGluZy4gVGhlIGJvZHkgaXMgb25seSBsb2FkZWQgb24gaW52b2NhdGlvbiwgc29cbml0IGNhbiBiZSBsb25nIGFuZCBkZXRhaWxlZC4gU3VwcG9ydGluZyBmaWxlcyBtYXkgc2l0IG5leHQgdG8gU0tJTEwubWQgaW4gdGhlIHNhbWVcbmRpcmVjdG9yeSBhbmQgYmUgcmVmZXJlbmNlZCBieSByZWxhdGl2ZSBwYXRoLlxuXG5Ta2lsbHMgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBhIG5ldyBza2lsbCBpcyB1c2FibGUgZnJvbSB0aGUgbmV4dCBtZXNzYWdlLmBcblxuY29uc3QgTkVXX0NPTU1BTkRfU0tJTEwgPSBgQ3JlYXRlIGEgcGljbyBjb21tYW5kIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBjb21tYW5kIGlzIGEgcHJvbXB0IHRlbXBsYXRlIHRoZSBVU0VSIGludm9rZXMgYXMgXFxgLzxuYW1lPiBbYXJnc11cXGAuIFRoZSBhZ2VudCBuZXZlclxuc2VlcyBjb21tYW5kcyB1bnRpbCBvbmUgaXMgcnVuLCBzbyB1c2UgYSBjb21tYW5kIGZvciB1c2VyLXRyaWdnZXJlZCBtYWNyb3MgYW5kIGEgc2tpbGxcbmZvciBjYXBhYmlsaXRpZXMgdGhlIGFnZW50IHNob3VsZCByZWFjaCBmb3Igb24gaXRzIG93bi5cblxuSXQgaXMgYSBtYXJrZG93biBmaWxlIGF0IFxcYC5waWNvL2NvbW1hbmRzLzxuYW1lPi5tZFxcYCAocHJvamVjdCkgb3JcblxcYH4vLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgIChnbG9iYWwpLCBvcHRpb25hbGx5IHdpdGggYSBkZXNjcmlwdGlvbiBpbiBmcm9udG1hdHRlcjpcblxuXFxgXFxgXFxgXG4tLS1cbmRlc2NyaXB0aW9uOiByZXZpZXcgYSBmaWxlIGZvciBzZWN1cml0eSBwcm9ibGVtc1xuLS0tXG5SZXZpZXcgJEFSR1VNRU5UUyBmb3Igc2VjdXJpdHkgcHJvYmxlbXMuIEZvY3VzIG9uIGlucHV0IHZhbGlkYXRpb24gYW5kIHNlY3JldHMuXG5cXGBcXGBcXGBcblxuXFxgJEFSR1VNRU5UU1xcYCBpcyByZXBsYWNlZCB3aXRoIHdoYXRldmVyIGZvbGxvd3MgdGhlIGNvbW1hbmQ7IHdpdGhvdXQgdGhlIHBsYWNlaG9sZGVyLFxuYXJndW1lbnRzIGFyZSBhcHBlbmRlZCBhZnRlciB0aGUgYm9keS4gQ29tbWFuZHMgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBhIG5ld1xuY29tbWFuZCBhcHBlYXJzIGluIHRoZSBzbGFzaCBtZW51IGZyb20gdGhlIG5leHQgbWVzc2FnZS5gXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTa2lsbEluZGV4KHJvb3QpIHtcbiAgY29uc3QgYnVpbHRpbiA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnbmV3LXRvb2wnLFxuICAgICAgZGVzY3JpcHRpb246ICdjcmVhdGUgYSBjdXN0b20gcGljbyB0b29sIGZyb20gYSBkZXNjcmlwdGlvbiBvZiB3aGF0IGl0IHNob3VsZCBkbycsXG4gICAgICBzb3VyY2U6ICdidWlsdGluJyxcbiAgICAgIGJvZHk6IE5FV19UT09MX1NLSUxMLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ25ldy1za2lsbCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ2NyZWF0ZSBhIHBpY28gc2tpbGwgdGhhdCB0ZWFjaGVzIHRoZSBhZ2VudCBhIHJldXNhYmxlIGNhcGFiaWxpdHknLFxuICAgICAgc291cmNlOiAnYnVpbHRpbicsXG4gICAgICBib2R5OiBORVdfU0tJTExfU0tJTEwsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnbmV3LWNvbW1hbmQnLFxuICAgICAgZGVzY3JpcHRpb246ICdjcmVhdGUgYSBwaWNvIHNsYXNoIGNvbW1hbmQsIGEgcHJvbXB0IHRlbXBsYXRlIHRoZSB1c2VyIGludm9rZXMnLFxuICAgICAgc291cmNlOiAnYnVpbHRpbicsXG4gICAgICBib2R5OiBORVdfQ09NTUFORF9TS0lMTCxcbiAgICB9LFxuICBdXG4gIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsU2tpbGxzRGlyKCksICdnbG9iYWwnKVxuICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgc2NhbkRpcihwcm9qZWN0U2tpbGxzRGlyKHJvb3QpLCAncHJvamVjdCcpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IHNraWxsIG9mIFsuLi5idWlsdGluLCAuLi5nbG9iYWwsIC4uLnByb2plY3RdKSBieU5hbWUuc2V0KHNraWxsLm5hbWUsIHNraWxsKVxuICBjb25zdCBza2lsbHMgPSBbLi4uYnlOYW1lLnZhbHVlcygpXVxuXG4gIHJldHVybiB7XG4gICAgbGlzdDogKCkgPT4gc2tpbGxzLFxuICAgIGFzeW5jIGxvYWQobmFtZSkge1xuICAgICAgY29uc3Qgc2tpbGwgPSBieU5hbWUuZ2V0KG5hbWUpXG4gICAgICBpZiAoIXNraWxsKSByZXR1cm4gbnVsbFxuICAgICAgaWYgKHNraWxsLmJvZHkpIHJldHVybiBza2lsbC5ib2R5XG4gICAgICBjb25zdCB7IGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoc2tpbGwuZmlsZSwgJ3V0Zi04JykpXG4gICAgICByZXR1cm4gYm9keVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgcmVhZGRpciB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGljb0hvbWUgfSBmcm9tICcuL3BhdGhzLmpzJ1xuaW1wb3J0IHsgcGFyc2VGcm9udG1hdHRlciB9IGZyb20gJy4vc2tpbGxzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsQ29tbWFuZHNEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdjb21tYW5kcycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0Q29tbWFuZHNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihyb290LCAnLnBpY28nLCAnY29tbWFuZHMnKVxufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FuRGlyKGRpciwgc291cmNlKSB7XG4gIGxldCBuYW1lcyA9IFtdXG4gIHRyeSB7XG4gICAgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3QgY29tbWFuZHMgPSBbXVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJy5tZCcpKSBjb250aW51ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG1ldGEgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoam9pbihkaXIsIGZpbGUpLCAndXRmLTgnKSlcbiAgICAgIGNvbW1hbmRzLnB1c2goe1xuICAgICAgICBuYW1lOiBmaWxlLnNsaWNlKDAsIC0zKSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGEuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgZmlsZTogam9pbihkaXIsIGZpbGUpLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIHt9XG4gIH1cbiAgcmV0dXJuIGNvbW1hbmRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBhbmRDb21tYW5kKGJvZHksIGFyZ3MpIHtcbiAgcmV0dXJuIGJvZHkuaW5jbHVkZXMoJyRBUkdVTUVOVFMnKVxuICAgID8gYm9keS5yZXBsYWNlQWxsKCckQVJHVU1FTlRTJywgYXJncylcbiAgICA6IGFyZ3NcbiAgICAgID8gYCR7Ym9keS50cmltKCl9XFxuXFxuJHthcmdzfWBcbiAgICAgIDogYm9keVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tbWFuZEluZGV4KHJvb3QpIHtcbiAgY29uc3QgZ2xvYmFsID0gYXdhaXQgc2NhbkRpcihnbG9iYWxDb21tYW5kc0RpcigpLCAnZ2xvYmFsJylcbiAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdENvbW1hbmRzRGlyKHJvb3QpLCAncHJvamVjdCcpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgWy4uLmdsb2JhbCwgLi4ucHJvamVjdF0pIGJ5TmFtZS5zZXQoY29tbWFuZC5uYW1lLCBjb21tYW5kKVxuICBjb25zdCBjb21tYW5kcyA9IFsuLi5ieU5hbWUudmFsdWVzKCldXG5cbiAgcmV0dXJuIHtcbiAgICBsaXN0OiAoKSA9PiBjb21tYW5kcyxcbiAgICBhc3luYyBsb2FkKG5hbWUsIGFyZ3MgPSAnJykge1xuICAgICAgY29uc3QgY29tbWFuZCA9IGJ5TmFtZS5nZXQobmFtZSlcbiAgICAgIGlmICghY29tbWFuZCkgcmV0dXJuIG51bGxcbiAgICAgIGNvbnN0IHsgYm9keSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShjb21tYW5kLmZpbGUsICd1dGYtOCcpKVxuICAgICAgcmV0dXJuIGV4cGFuZENvbW1hbmQoYm9keS50cmltKCksIGFyZ3MudHJpbSgpKVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGNvbm5lY3RNQ1AgfSBmcm9tICdAcHJzbS9haSdcbmltcG9ydCB7IGdsb2JhbE1jcEZpbGUsIHByb2plY3RNY3BGaWxlLCBwcm9qZWN0RGlyLCBlbnN1cmVEaXIsIHBpY29Ib21lIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gdG9rZW5pemUoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IFtdXG4gIGNvbnN0IHJlID0gLyhbQS1aYS16MC05Xy1dKz0pP1wiKFteXCJdKilcInwoW0EtWmEtejAtOV8tXSs9KT8nKFteJ10qKSd8KFxcUyspL2dcbiAgbGV0IG1cbiAgd2hpbGUgKChtID0gcmUuZXhlYyhzdHIpKSkge1xuICAgIGlmIChtWzFdICE9PSB1bmRlZmluZWQgfHwgbVszXSAhPT0gdW5kZWZpbmVkKSB0b2tlbnMucHVzaCgobVsxXSA/PyBtWzNdKSArIChtWzJdID8/IG1bNF0pKVxuICAgIGVsc2UgdG9rZW5zLnB1c2gobVsyXSA/PyBtWzRdID8/IG1bNV0pXG4gIH1cbiAgcmV0dXJuIHRva2Vuc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb21tYW5kKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSB0b2tlbml6ZShzdHIpXG5cbiAgY29uc3QgZW52ID0ge31cbiAgd2hpbGUgKHRva2Vucy5sZW5ndGggJiYgL15bQS1aYS16X11bQS1aYS16MC05X10qPS8udGVzdCh0b2tlbnNbMF0pKSB7XG4gICAgY29uc3Qgc2VwID0gdG9rZW5zWzBdLmluZGV4T2YoJz0nKVxuICAgIGVudlt0b2tlbnNbMF0uc2xpY2UoMCwgc2VwKV0gPSB0b2tlbnNbMF0uc2xpY2Uoc2VwICsgMSlcbiAgICB0b2tlbnMuc2hpZnQoKVxuICB9XG4gIGlmICghdG9rZW5zLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdlbXB0eSBjb21tYW5kJylcbiAgcmV0dXJuIHsgY29tbWFuZDogdG9rZW5zWzBdLCBhcmdzOiB0b2tlbnMuc2xpY2UoMSksIGVudiB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNlcnZlclNwZWMoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IHRva2VuaXplKHN0cilcbiAgaWYgKCEvXmh0dHBzPzpcXC9cXC8vLnRlc3QodG9rZW5zWzBdIHx8ICcnKSkgcmV0dXJuIHsgdHlwZTogJ3N0ZGlvJywgLi4ucGFyc2VDb21tYW5kKHN0cikgfVxuXG4gIGNvbnN0IFt1cmwsIC4uLnJlc3RdID0gdG9rZW5zXG4gIGNvbnN0IGhlYWRlcnMgPSB7fVxuICBmb3IgKGNvbnN0IHRva2VuIG9mIHJlc3QpIHtcbiAgICBjb25zdCBzZXAgPSB0b2tlbi5pbmRleE9mKCc9JylcbiAgICBpZiAoc2VwIDwgMSkgdGhyb3cgbmV3IEVycm9yKGBodHRwIHNlcnZlciBzcGVjIG9ubHkgdGFrZXMgYSB1cmwgYW5kIEhlYWRlcj12YWx1ZSBwYWlycywgZ290IFwiJHt0b2tlbn1cImApXG4gICAgaGVhZGVyc1t0b2tlbi5zbGljZSgwLCBzZXApXSA9IHRva2VuLnNsaWNlKHNlcCArIDEpXG4gIH1cbiAgcmV0dXJuIHsgdHlwZTogJ2h0dHAnLCB1cmwsIGhlYWRlcnMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkSnNvbihmaWxlLCBmYWxsYmFjaykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsbGJhY2tcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlZ2lzdHJ5KCkge1xuICByZXR1cm4gcmVhZEpzb24oZ2xvYmFsTWNwRmlsZSgpLCB7IHNlcnZlcnM6IHt9IH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVJlZ2lzdHJ5KHJlZ2lzdHJ5KSB7XG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoZ2xvYmFsTWNwRmlsZSgpLCBKU09OLnN0cmluZ2lmeShyZWdpc3RyeSwgbnVsbCwgMikgKyAnXFxuJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpIHtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZEpzb24ocHJvamVjdE1jcEZpbGUocm9vdCksIHt9KVxuICByZXR1cm4geyBkaXNhYmxlZDogY29uZmlnLmRpc2FibGVkIHx8IHt9LCBzZXJ2ZXJzOiBjb25maWcuc2VydmVycyB8fCB7fSB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKSB7XG4gIGVuc3VyZURpcihwcm9qZWN0RGlyKHJvb3QpKVxuICBhd2FpdCB3cml0ZUZpbGUocHJvamVjdE1jcEZpbGUocm9vdCksIEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMikgKyAnXFxuJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1jcFJ1bnRpbWUoeyByb290LCBvbkNoYW5nZSA9ICgpID0+IHt9IH0pIHtcbiAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICBjb25zdCBwcm9qZWN0Q29uZmlnID0gYXdhaXQgcmVhZFByb2plY3RDb25maWcocm9vdClcbiAgY29uc3Qgc2VydmVycyA9IG5ldyBNYXAoKVxuXG4gIGNvbnN0IHJlZ2lzdGVyID0gKG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgc2VydmVycy5zZXQobmFtZSwge1xuICAgICAgbmFtZSxcbiAgICAgIGNvbW1hbmQsXG4gICAgICBzY29wZSxcbiAgICAgIGVuYWJsZWQ6ICFwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdLFxuICAgICAgc3RhdHVzOiBwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdID8gJ2Rpc2FibGVkJyA6ICdpZGxlJyxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgY29ubmVjdGlvbjogbnVsbCxcbiAgICB9KVxuICB9XG4gIGZvciAoY29uc3QgW25hbWUsIGNvbW1hbmRdIG9mIE9iamVjdC5lbnRyaWVzKHJlZ2lzdHJ5LnNlcnZlcnMpKSByZWdpc3RlcihuYW1lLCBjb21tYW5kLCAnZ2xvYmFsJylcbiAgZm9yIChjb25zdCBbbmFtZSwgY29tbWFuZF0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdENvbmZpZy5zZXJ2ZXJzKSkgcmVnaXN0ZXIobmFtZSwgY29tbWFuZCwgJ3Byb2plY3QnKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHRyYW5zcG9ydEZhY3RvcnkoY29tbWFuZCkge1xuICAgIGNvbnN0IHNwZWMgPSBwYXJzZVNlcnZlclNwZWMoY29tbWFuZClcbiAgICBpZiAoc3BlYy50eXBlID09PSAnaHR0cCcpIHtcbiAgICAgIGNvbnN0IHsgU3RyZWFtYWJsZUhUVFBDbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RyZWFtYWJsZUh0dHAuanMnKVxuICAgICAgcmV0dXJuICgpID0+XG4gICAgICAgIG5ldyBTdHJlYW1hYmxlSFRUUENsaWVudFRyYW5zcG9ydChuZXcgVVJMKHNwZWMudXJsKSwge1xuICAgICAgICAgIHJlcXVlc3RJbml0OiBPYmplY3Qua2V5cyhzcGVjLmhlYWRlcnMpLmxlbmd0aCA/IHsgaGVhZGVyczogc3BlYy5oZWFkZXJzIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGNvbnN0IHsgU3RkaW9DbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RkaW8uanMnKVxuICAgIHJldHVybiAoKSA9PlxuICAgICAgbmV3IFN0ZGlvQ2xpZW50VHJhbnNwb3J0KHtcbiAgICAgICAgY29tbWFuZDogc3BlYy5jb21tYW5kLFxuICAgICAgICBhcmdzOiBzcGVjLmFyZ3MsXG4gICAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uc3BlYy5lbnYgfSxcbiAgICAgICAgc3RkZXJyOiAncGlwZScsXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gY29ubmVjdChuYW1lKSB7XG4gICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICBpZiAoIXNlcnZlcikgcmV0dXJuXG4gICAgc2VydmVyLnN0YXR1cyA9ICdjb25uZWN0aW5nJ1xuICAgIHNlcnZlci5lcnJvciA9IG51bGxcbiAgICBvbkNoYW5nZSgpXG4gICAgdHJ5IHtcbiAgICAgIHNlcnZlci5jb25uZWN0aW9uID0gYXdhaXQgY29ubmVjdE1DUCh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHRyYW5zcG9ydDogYXdhaXQgdHJhbnNwb3J0RmFjdG9yeShzZXJ2ZXIuY29tbWFuZCksXG4gICAgICB9KVxuICAgICAgc2VydmVyLnN0YXR1cyA9ICdjb25uZWN0ZWQnXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXJ2ZXIuc3RhdHVzID0gJ2Vycm9yJ1xuICAgICAgc2VydmVyLmVycm9yID0gU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMzAwKVxuICAgICAgc2VydmVyLmNvbm5lY3Rpb24gPSBudWxsXG4gICAgfVxuICAgIG9uQ2hhbmdlKClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3QobmFtZSkge1xuICAgIGNvbnN0IHNlcnZlciA9IHNlcnZlcnMuZ2V0KG5hbWUpXG4gICAgaWYgKHNlcnZlcj8uY29ubmVjdGlvbikge1xuICAgICAgYXdhaXQgc2VydmVyLmNvbm5lY3Rpb24uY2xvc2UoKS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgIHNlcnZlci5jb25uZWN0aW9uID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29ubmVjdEFsbCgpIHtcbiAgICAgIGNvbnN0IHBlbmRpbmcgPSBbXVxuICAgICAgZm9yIChjb25zdCBzZXJ2ZXIgb2Ygc2VydmVycy52YWx1ZXMoKSkge1xuICAgICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIHBlbmRpbmcucHVzaChjb25uZWN0KHNlcnZlci5uYW1lKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQocGVuZGluZylcbiAgICB9LFxuICAgIGFzeW5jIGFkZChuYW1lLCBjb21tYW5kLCBzY29wZSA9ICdnbG9iYWwnKSB7XG4gICAgICBpZiAoc2NvcGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgICBjb25maWcuc2VydmVyc1tuYW1lXSA9IGNvbW1hbmRcbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgcmVhZFJlZ2lzdHJ5KClcbiAgICAgICAgcmVnaXN0cnkuc2VydmVyc1tuYW1lXSA9IGNvbW1hbmRcbiAgICAgICAgYXdhaXQgd3JpdGVSZWdpc3RyeShyZWdpc3RyeSlcbiAgICAgIH1cbiAgICAgIHNlcnZlcnMuc2V0KG5hbWUsIHsgbmFtZSwgY29tbWFuZCwgc2NvcGUsIGVuYWJsZWQ6IHRydWUsIHN0YXR1czogJ2lkbGUnLCBlcnJvcjogbnVsbCwgY29ubmVjdGlvbjogbnVsbCB9KVxuICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgIH0sXG4gICAgYXN5bmMgcmVtb3ZlKG5hbWUpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gc2VydmVycy5nZXQobmFtZSk/LnNjb3BlXG4gICAgICBpZiAoc2NvcGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgICBkZWxldGUgY29uZmlnLnNlcnZlcnNbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgcmVhZFJlZ2lzdHJ5KClcbiAgICAgICAgZGVsZXRlIHJlZ2lzdHJ5LnNlcnZlcnNbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVSZWdpc3RyeShyZWdpc3RyeSlcbiAgICAgIH1cbiAgICAgIGF3YWl0IGRpc2Nvbm5lY3QobmFtZSlcbiAgICAgIHNlcnZlcnMuZGVsZXRlKG5hbWUpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgfSxcbiAgICBhc3luYyB0b2dnbGUobmFtZSkge1xuICAgICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICAgIGlmICghc2VydmVyKSByZXR1cm5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIHtcbiAgICAgICAgc2VydmVyLmVuYWJsZWQgPSBmYWxzZVxuICAgICAgICBzZXJ2ZXIuc3RhdHVzID0gJ2Rpc2FibGVkJ1xuICAgICAgICBjb25maWcuZGlzYWJsZWRbbmFtZV0gPSB0cnVlXG4gICAgICAgIGF3YWl0IHdyaXRlUHJvamVjdENvbmZpZyhyb290LCBjb25maWcpXG4gICAgICAgIGF3YWl0IGRpc2Nvbm5lY3QobmFtZSlcbiAgICAgICAgb25DaGFuZ2UoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VydmVyLmVuYWJsZWQgPSB0cnVlXG4gICAgICAgIGRlbGV0ZSBjb25maWcuZGlzYWJsZWRbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgICAgfVxuICAgIH0sXG4gICAgcmVjb25uZWN0KG5hbWUpIHtcbiAgICAgIHJldHVybiBkaXNjb25uZWN0KG5hbWUpLnRoZW4oKCkgPT4gY29ubmVjdChuYW1lKSlcbiAgICB9LFxuICAgIGxpc3QoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldLm1hcCgocykgPT4gKHtcbiAgICAgICAgbmFtZTogcy5uYW1lLFxuICAgICAgICBjb21tYW5kOiBzLmNvbW1hbmQsXG4gICAgICAgIHNjb3BlOiBzLnNjb3BlLFxuICAgICAgICBlbmFibGVkOiBzLmVuYWJsZWQsXG4gICAgICAgIHN0YXR1czogcy5zdGF0dXMsXG4gICAgICAgIGVycm9yOiBzLmVycm9yLFxuICAgICAgICB0b29sQ291bnQ6IHMuY29ubmVjdGlvbj8udG9vbHMubGVuZ3RoIHx8IDAsXG4gICAgICAgIHRvb2xzOiAocy5jb25uZWN0aW9uPy50b29scyB8fCBbXSkubWFwKCh0KSA9PiAoeyBuYW1lOiB0Lm5hbWUsIGRlc2NyaXB0aW9uOiB0LmRlc2NyaXB0aW9uIHx8ICcnIH0pKSxcbiAgICAgIH0pKVxuICAgIH0sXG4gICAgdG9vbHMoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldXG4gICAgICAgIC5maWx0ZXIoKHMpID0+IHMuY29ubmVjdGlvbilcbiAgICAgICAgLmZsYXRNYXAoKHMpID0+IHMuY29ubmVjdGlvbi50b29scylcbiAgICB9LFxuICAgIGFzeW5jIGNsb3NlQWxsKCkge1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIHNlcnZlcnMua2V5cygpKSBhd2FpdCBkaXNjb25uZWN0KG5hbWUpXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCByZWFkZGlyLCB3cml0ZUZpbGUsIG1rZGlyIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgcHJvamVjdERpciB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgeyBwYXJzZUZyb250bWF0dGVyIH0gZnJvbSAnLi9za2lsbHMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxNZW1vcnlEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdtZW1vcnknKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdE1lbW9yeURpcihyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdtZW1vcnknKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2x1Z2lmeShuYW1lKSB7XG4gIGNvbnN0IHNsdWcgPSBTdHJpbmcobmFtZSlcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJylcbiAgICAucmVwbGFjZSgvXi0rfC0rJC9nLCAnJylcbiAgICAuc2xpY2UoMCwgNjApXG4gIGlmICghc2x1ZykgdGhyb3cgbmV3IEVycm9yKCdtZW1vcnkgbmFtZSBtdXN0IGNvbnRhaW4gbGV0dGVycyBvciBudW1iZXJzJylcbiAgcmV0dXJuIHNsdWdcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNjb3BlKSB7XG4gIGxldCBuYW1lcyA9IFtdXG4gIHRyeSB7XG4gICAgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3QgbWVtb3JpZXMgPSBbXVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJy5tZCcpKSBjb250aW51ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG1ldGEsIGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoam9pbihkaXIsIGZpbGUpLCAndXRmLTgnKSlcbiAgICAgIG1lbW9yaWVzLnB1c2goe1xuICAgICAgICBuYW1lOiBtZXRhLm5hbWUgfHwgZmlsZS5zbGljZSgwLCAtMyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzY29wZSxcbiAgICAgICAgZmlsZTogam9pbihkaXIsIGZpbGUpLFxuICAgICAgICBib2R5OiBib2R5LnRyaW0oKSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBtZW1vcmllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVtb3J5KHJvb3QpIHtcbiAgY29uc3QgZGlyRm9yID0gKHNjb3BlKSA9PiAoc2NvcGUgPT09ICdnbG9iYWwnID8gZ2xvYmFsTWVtb3J5RGlyKCkgOiBwcm9qZWN0TWVtb3J5RGlyKHJvb3QpKVxuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgbGlzdCgpIHtcbiAgICAgIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsTWVtb3J5RGlyKCksICdnbG9iYWwnKVxuICAgICAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdE1lbW9yeURpcihyb290KSwgJ3Byb2plY3QnKVxuICAgICAgcmV0dXJuIFsuLi5wcm9qZWN0LCAuLi5nbG9iYWxdXG4gICAgfSxcbiAgICBhc3luYyByZW1lbWJlcih7IG5hbWUsIGRlc2NyaXB0aW9uLCBjb250ZW50LCBzY29wZSA9ICdwcm9qZWN0JyB9KSB7XG4gICAgICBpZiAoIVsncHJvamVjdCcsICdnbG9iYWwnXS5pbmNsdWRlcyhzY29wZSkpIHRocm93IG5ldyBFcnJvcignc2NvcGUgbXVzdCBiZSBwcm9qZWN0IG9yIGdsb2JhbCcpXG4gICAgICBjb25zdCBzbHVnID0gc2x1Z2lmeShuYW1lKVxuICAgICAgY29uc3QgZGlyID0gZGlyRm9yKHNjb3BlKVxuICAgICAgYXdhaXQgbWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgY29uc3QgZmlsZSA9IGpvaW4oZGlyLCBgJHtzbHVnfS5tZGApXG4gICAgICBjb25zdCB0ZXh0ID0gYC0tLVxcbm5hbWU6ICR7c2x1Z31cXG5kZXNjcmlwdGlvbjogJHtTdHJpbmcoZGVzY3JpcHRpb24pLnJlcGxhY2UoL1xcbi9nLCAnICcpfVxcbi0tLVxcbiR7Y29udGVudH1cXG5gXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZSwgdGV4dCwgJ3V0Zi04JylcbiAgICAgIHJldHVybiB7IG5hbWU6IHNsdWcsIHNjb3BlLCBmaWxlIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlY2FsbChuYW1lKSB7XG4gICAgICBjb25zdCBtZW1vcmllcyA9IGF3YWl0IHRoaXMubGlzdCgpXG4gICAgICBjb25zdCBtZW1vcnkgPSBtZW1vcmllcy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG5hbWUpXG4gICAgICBpZiAoIW1lbW9yeSkge1xuICAgICAgICBjb25zdCBrbm93biA9IG1lbW9yaWVzLm1hcCgobSkgPT4gbS5uYW1lKS5qb2luKCcsICcpIHx8ICdub25lJ1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIG1lbW9yeSBuYW1lZCBcIiR7bmFtZX1cIjsga25vd24gbWVtb3JpZXM6ICR7a25vd259YClcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG5hbWU6IG1lbW9yeS5uYW1lLCBzY29wZTogbWVtb3J5LnNjb3BlLCBmaWxlOiBtZW1vcnkuZmlsZSwgY29udGVudDogbWVtb3J5LmJvZHkgfVxuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lbW9yeUluZGV4KG1lbW9yaWVzLCByb290KSB7XG4gIGlmIChtZW1vcmllcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gYFlvdSBoYXZlIG5vIHNhdmVkIG1lbW9yaWVzIHlldC4gVGhpcyBpbmRleCBsaXN0cyB0aGVtIHdoZW4geW91IHNhdmUgZHVyYWJsZSBmYWN0cyB3aXRoIHRoZSByZW1lbWJlciB0b29sOyBhbnN3ZXIgcXVlc3Rpb25zIGFib3V0IHlvdXIgbWVtb3JpZXMgZnJvbSB0aGlzIGluZGV4IGFsb25lLCB3aXRob3V0IHNlYXJjaGluZyB0aGUgZmlsZXN5c3RlbS5gXG4gIH1cbiAgY29uc3QgbGluZXMgPSBtZW1vcmllcy5tYXAoKG0pID0+IGAtICR7bS5uYW1lfSAoJHttLnNjb3BlfSk6ICR7bS5kZXNjcmlwdGlvbn1gKVxuICByZXR1cm4gW1xuICAgIGBNZW1vcmllcyB5b3UgaGF2ZSBzYXZlZC4gVGhpcyBpbmRleCBpcyBjb21wbGV0ZTogYW5zd2VyIHF1ZXN0aW9ucyBhYm91dCB5b3VyIG1lbW9yaWVzIGZyb20gaXQgZGlyZWN0bHksIGxvYWQgb25lIHdpdGggdGhlIHJlY2FsbCB0b29sIHdoZW4gaXRzIGNvbnRlbnQgaXMgcmVsZXZhbnQsIGFuZCBuZXZlciBzZWFyY2ggdGhlIGZpbGVzeXN0ZW0gZm9yIG1lbW9yaWVzLiBUaGUgZmlsZXMgbGl2ZSBpbiAke3Byb2plY3RNZW1vcnlEaXIocm9vdCl9IGFuZCAke2dsb2JhbE1lbW9yeURpcigpfSBhbmQgY2FuIGJlIGVkaXRlZCBvciBkZWxldGVkIHdpdGggb3JkaW5hcnkgdG9vbHMgd2hlbiBhc2tlZCB0byBjdXJhdGUgdGhlbS5gLFxuICAgIC4uLmxpbmVzLFxuICBdLmpvaW4oJ1xcbicpXG59XG4iLCAiaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgeyBmaW5kUHJvamVjdFJvb3QgfSBmcm9tICcuL3BhdGhzLmpzJ1xuaW1wb3J0IHsgbG9hZFN0YXJ0dXBDb250ZXh0LCBjcmVhdGVDb250ZXh0VHJhY2tlciB9IGZyb20gJy4vY29udGV4dC5qcydcbmltcG9ydCB7IGNyZWF0ZVNraWxsSW5kZXggfSBmcm9tICcuL3NraWxscy5qcydcbmltcG9ydCB7IGNyZWF0ZUNvbW1hbmRJbmRleCB9IGZyb20gJy4vY29tbWFuZHMuanMnXG5pbXBvcnQgeyBjcmVhdGVNY3BSdW50aW1lIH0gZnJvbSAnLi9tY3AuanMnXG5pbXBvcnQgeyBjcmVhdGVNZW1vcnkgfSBmcm9tICcuL21lbW9yeS5qcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkUHJvamVjdEJvb3QoY3dkLCB7IG9uTWNwQ2hhbmdlID0gKCkgPT4ge30gfSA9IHt9KSB7XG4gIGNvbnN0IGhvbWUgPSBob21lZGlyKClcbiAgY29uc3Qgcm9vdCA9IGZpbmRQcm9qZWN0Um9vdChjd2QpXG4gIGNvbnN0IHN0YXJ0dXBDb250ZXh0ID0gbG9hZFN0YXJ0dXBDb250ZXh0KGN3ZClcbiAgY29uc3QgdHJhY2tlciA9IGNyZWF0ZUNvbnRleHRUcmFja2VyKHtcbiAgICBzdG9wRGlyOiBzdGFydHVwQ29udGV4dC5zdG9wRGlyLFxuICAgIGxvYWRlZDogbmV3IFNldChzdGFydHVwQ29udGV4dC5maWxlcy5tYXAoKGYpID0+IGYucGF0aCkpLFxuICB9KVxuICByZXR1cm4ge1xuICAgIGN3ZCxcbiAgICByb290LFxuICAgIGRpc3BsYXlDd2Q6IGN3ZC5zdGFydHNXaXRoKGhvbWUpID8gY3dkLnJlcGxhY2UoaG9tZSwgJ34nKSA6IGN3ZCxcbiAgICBzdGFydHVwQ29udGV4dCxcbiAgICB0cmFja2VyLFxuICAgIHNraWxsczogYXdhaXQgY3JlYXRlU2tpbGxJbmRleChyb290KSxcbiAgICBjb21tYW5kczogYXdhaXQgY3JlYXRlQ29tbWFuZEluZGV4KHJvb3QpLFxuICAgIG1jcDogYXdhaXQgY3JlYXRlTWNwUnVudGltZSh7IHJvb3QsIG9uQ2hhbmdlOiBvbk1jcENoYW5nZSB9KSxcbiAgICBtZW1vcnk6IGNyZWF0ZU1lbW9yeShyb290KSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5jb25zdCBNQVhfTElORVMgPSAyMDAwXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaGVsbE1hbmFnZXIoeyBvbkNoYW5nZSA9ICgpID0+IHt9LCBvbkV4aXQgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3Qgc2hlbGxzID0gbmV3IE1hcCgpXG4gIGxldCBuZXh0SWQgPSAxXG5cbiAgZnVuY3Rpb24gcHVibGljVmlldyhzaGVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogc2hlbGwuaWQsXG4gICAgICBjb21tYW5kOiBzaGVsbC5jb21tYW5kLFxuICAgICAgY3dkOiBzaGVsbC5jd2QsXG4gICAgICBzdGF0dXM6IHNoZWxsLnN0YXR1cyxcbiAgICAgIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSxcbiAgICAgIHN0YXJ0ZWRBdDogc2hlbGwuc3RhcnRlZEF0LFxuICAgICAgZW5kZWRBdDogc2hlbGwuZW5kZWRBdCxcbiAgICAgIGtpbGxlZEJ5OiBzaGVsbC5raWxsZWRCeSxcbiAgICAgIGxhc3RMaW5lOiBzaGVsbC5saW5lcy5hdCgtMSkgfHwgJycsXG4gICAgICBsaW5lQ291bnQ6IHNoZWxsLmxpbmVzLmxlbmd0aCxcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChjb21tYW5kLCB7IGN3ZCB9ID0ge30pIHtcbiAgICBjb25zdCBpZCA9IFN0cmluZyhuZXh0SWQrKylcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKGNvbW1hbmQsIHtcbiAgICAgIHNoZWxsOiB0cnVlLFxuICAgICAgY3dkOiBjd2QgfHwgcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgRk9SQ0VfQ09MT1I6ICcwJywgTk9fQ09MT1I6ICcxJyB9LFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgIH0pXG4gICAgY29uc3Qgc2hlbGwgPSB7XG4gICAgICBpZCxcbiAgICAgIGNvbW1hbmQsXG4gICAgICBjd2Q6IGN3ZCB8fCBwcm9jZXNzLmN3ZCgpLFxuICAgICAgY2hpbGQsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgIGV4aXRDb2RlOiBudWxsLFxuICAgICAgc3RhcnRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgZW5kZWRBdDogbnVsbCxcbiAgICAgIGtpbGxlZEJ5OiBudWxsLFxuICAgICAgbGluZXM6IFtdLFxuICAgICAgcGFydGlhbDogJycsXG4gICAgfVxuXG4gICAgY29uc3QgcHVzaCA9IChjaHVuaykgPT4ge1xuICAgICAgY29uc3QgdGV4dCA9IHNoZWxsLnBhcnRpYWwgKyBjaHVuay50b1N0cmluZygpXG4gICAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpXG4gICAgICBzaGVsbC5wYXJ0aWFsID0gbGluZXMucG9wKCkgfHwgJydcbiAgICAgIHNoZWxsLmxpbmVzLnB1c2goLi4ubGluZXMpXG4gICAgICBpZiAoc2hlbGwubGluZXMubGVuZ3RoID4gTUFYX0xJTkVTKSBzaGVsbC5saW5lcy5zcGxpY2UoMCwgc2hlbGwubGluZXMubGVuZ3RoIC0gTUFYX0xJTkVTKVxuICAgICAgb25DaGFuZ2UoKVxuICAgIH1cbiAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBwdXNoKVxuICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIHB1c2gpXG4gICAgY2hpbGQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgcHVzaChgW2ZhaWxlZCB0byBzdGFydDogJHtlcnIubWVzc2FnZX1dXFxuYClcbiAgICB9KVxuICAgIGNoaWxkLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgaWYgKHNoZWxsLnBhcnRpYWwpIHtcbiAgICAgICAgc2hlbGwubGluZXMucHVzaChzaGVsbC5wYXJ0aWFsKVxuICAgICAgICBzaGVsbC5wYXJ0aWFsID0gJydcbiAgICAgIH1cbiAgICAgIHNoZWxsLnN0YXR1cyA9ICdleGl0ZWQnXG4gICAgICBzaGVsbC5leGl0Q29kZSA9IGNvZGUgPz8gKHNpZ25hbCA/IDEgOiAwKVxuICAgICAgc2hlbGwuZW5kZWRBdCA9IERhdGUubm93KClcbiAgICAgIG9uQ2hhbmdlKClcbiAgICAgIG9uRXhpdChwdWJsaWNWaWV3KHNoZWxsKSlcbiAgICB9KVxuXG4gICAgc2hlbGxzLnNldChpZCwgc2hlbGwpXG4gICAgb25DaGFuZ2UoKVxuICAgIHJldHVybiB7IGlkIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldChpZCkge1xuICAgIGNvbnN0IHNoZWxsID0gc2hlbGxzLmdldChTdHJpbmcoaWQpKVxuICAgIGlmICghc2hlbGwpIHRocm93IG5ldyBFcnJvcihgbm8gc2hlbGwgd2l0aCBpZCAke2lkfTsgaXQgaXMgZ29uZSBhbmQgY2Fubm90IGJlIGluc3BlY3RlZCAoZXhpdGVkIHNoZWxscyBkaXNhcHBlYXIgd2hlbiBkaXNtaXNzZWQpYClcbiAgICByZXR1cm4gc2hlbGxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhcnQsXG4gICAgb3V0cHV0KGlkLCB7IHRhaWwgPSAxMDAgfSA9IHt9KSB7XG4gICAgICBjb25zdCBzaGVsbCA9IGdldChpZClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBzaGVsbC5pZCxcbiAgICAgICAgY29tbWFuZDogc2hlbGwuY29tbWFuZCxcbiAgICAgICAgc3RhdHVzOiBzaGVsbC5zdGF0dXMsXG4gICAgICAgIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSxcbiAgICAgICAgb3V0cHV0OiBzaGVsbC5saW5lcy5zbGljZSgtdGFpbCkuam9pbignXFxuJyksXG4gICAgICAgIHRvdGFsTGluZXM6IHNoZWxsLmxpbmVzLmxlbmd0aCxcbiAgICAgIH1cbiAgICB9LFxuICAgIGtpbGwoaWQsIGJ5ID0gJ21vZGVsJykge1xuICAgICAgY29uc3Qgc2hlbGwgPSBnZXQoaWQpXG4gICAgICBpZiAoc2hlbGwuc3RhdHVzICE9PSAncnVubmluZycpIHJldHVybiB7IGlkOiBzaGVsbC5pZCwgc3RhdHVzOiBzaGVsbC5zdGF0dXMsIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSB9XG4gICAgICBzaGVsbC5raWxsZWRCeSA9IGJ5XG4gICAgICBzaGVsbC5jaGlsZC5raWxsKCdTSUdURVJNJylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoc2hlbGwuc3RhdHVzID09PSAncnVubmluZycpIHNoZWxsLmNoaWxkLmtpbGwoJ1NJR0tJTEwnKVxuICAgICAgfSwgMzAwMCkudW5yZWYoKVxuICAgICAgcmV0dXJuIHsgaWQ6IHNoZWxsLmlkLCBzdGF0dXM6ICdraWxsaW5nJyB9XG4gICAgfSxcbiAgICBkaXNtaXNzKGlkKSB7XG4gICAgICBjb25zdCBzaGVsbCA9IHNoZWxscy5nZXQoU3RyaW5nKGlkKSlcbiAgICAgIGlmIChzaGVsbCAmJiBzaGVsbC5zdGF0dXMgPT09ICdleGl0ZWQnKSB7XG4gICAgICAgIHNoZWxscy5kZWxldGUoU3RyaW5nKGlkKSlcbiAgICAgICAgb25DaGFuZ2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgbGlzdCgpIHtcbiAgICAgIHJldHVybiBbLi4uc2hlbGxzLnZhbHVlcygpXS5tYXAocHVibGljVmlldylcbiAgICB9LFxuICAgIHJ1bm5pbmcoKSB7XG4gICAgICByZXR1cm4gWy4uLnNoZWxscy52YWx1ZXMoKV0uZmlsdGVyKChzKSA9PiBzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKS5sZW5ndGhcbiAgICB9LFxuICAgIGtpbGxBbGwoKSB7XG4gICAgICBmb3IgKGNvbnN0IHNoZWxsIG9mIHNoZWxscy52YWx1ZXMoKSkge1xuICAgICAgICBpZiAoc2hlbGwuc3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgICAgICBzaGVsbC5raWxsZWRCeSA9ICd1c2VyJ1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzaGVsbC5jaGlsZC5raWxsKCdTSUdLSUxMJylcbiAgICAgICAgICB9IGNhdGNoIHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ25vZGU6Y3J5cHRvJ1xuXG5leHBvcnQgY29uc3QgU0VTU0lPTl9WRVJTSU9OID0gMVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUV2ZW50KHR5cGUsIGRhdGEgPSB7fSkge1xuICByZXR1cm4geyBpZDogcmFuZG9tVVVJRCgpLCBhdDogRGF0ZS5ub3coKSwgdHlwZSwgZGF0YSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlSGVhZGVyKHsgY3dkLCByb290IH0pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnc2Vzc2lvbicsXG4gICAgdmVyc2lvbjogU0VTU0lPTl9WRVJTSU9OLFxuICAgIGlkOiByYW5kb21VVUlEKCksXG4gICAgY3dkLFxuICAgIHJvb3QsXG4gICAgY3JlYXRlZEF0OiBEYXRlLm5vdygpLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVMaW5lKGV2ZW50KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShldmVudCkgKyAnXFxuJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VMaW5lKGxpbmUpIHtcbiAgY29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpXG4gIGlmICghdHJpbW1lZCkgcmV0dXJuIG51bGxcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHRyaW1tZWQpXG4gICAgcmV0dXJuIHBhcnNlZCAmJiB0eXBlb2YgcGFyc2VkLnR5cGUgPT09ICdzdHJpbmcnID8gcGFyc2VkIDogbnVsbFxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmVzKHRleHQpIHtcbiAgcmV0dXJuIHRleHQuc3BsaXQoJ1xcbicpLm1hcChwYXJzZUxpbmUpLmZpbHRlcihCb29sZWFuKVxufVxuIiwgImltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlLCByZWFkZGlyLCBzdGF0LCB1bmxpbmsgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBzZXNzaW9uc0RpciwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IG1ha2VIZWFkZXIsIHNlcmlhbGl6ZUxpbmUsIHBhcnNlTGluZXMsIHBhcnNlTGluZSB9IGZyb20gJy4vZXZlbnRzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbih7IGN3ZCwgcm9vdCB9KSB7XG4gIGNvbnN0IGhlYWRlciA9IG1ha2VIZWFkZXIoeyBjd2QsIHJvb3QgfSlcbiAgY29uc3QgZmlsZSA9IGpvaW4oZW5zdXJlRGlyKHNlc3Npb25zRGlyKHJvb3QpKSwgYCR7aGVhZGVyLmlkfS5qc29ubGApXG4gIGNvbnN0IHNlc3Npb24gPSBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KVxuICBzZXNzaW9uLmFwcGVuZChoZWFkZXIpXG4gIHJldHVybiBzZXNzaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KSB7XG4gIGxldCBxdWV1ZSA9IFByb21pc2UucmVzb2x2ZSgpXG4gIHJldHVybiB7XG4gICAgaWQ6IGhlYWRlci5pZCxcbiAgICBmaWxlLFxuICAgIGhlYWRlcixcbiAgICBhcHBlbmQoZXZlbnQpIHtcbiAgICAgIHF1ZXVlID0gcXVldWUudGhlbigoKSA9PiBhcHBlbmRGaWxlKGZpbGUsIHNlcmlhbGl6ZUxpbmUoZXZlbnQpKSlcbiAgICAgIHJldHVybiBxdWV1ZVxuICAgIH0sXG4gICAgZmx1c2goKSB7XG4gICAgICByZXR1cm4gcXVldWVcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU2Vzc2lvbihmaWxlKSB7XG4gIGNvbnN0IGV2ZW50cyA9IHBhcnNlTGluZXMoYXdhaXQgcmVhZEZpbGUoZmlsZSwgJ3V0Zi04JykpXG4gIGNvbnN0IGhlYWRlciA9IGV2ZW50c1swXT8udHlwZSA9PT0gJ3Nlc3Npb24nID8gZXZlbnRzLnNoaWZ0KCkgOiBudWxsXG4gIGlmICghaGVhZGVyKSB0aHJvdyBuZXcgRXJyb3IoYG5vdCBhIHBpY28gc2Vzc2lvbiBmaWxlOiAke2ZpbGV9YClcbiAgcmV0dXJuIHsgaGVhZGVyLCBldmVudHMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZXNzaW9uTWV0YShmaWxlKSB7XG4gIGNvbnN0IFtpbmZvLCBoYW5kbGVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW3N0YXQoZmlsZSksIHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpXSlcbiAgY29uc3QgbGluZXMgPSBoYW5kbGUuc3BsaXQoJ1xcbicpXG4gIGNvbnN0IGhlYWRlciA9IHBhcnNlTGluZShsaW5lc1swXSlcbiAgaWYgKCFoZWFkZXIgfHwgaGVhZGVyLnR5cGUgIT09ICdzZXNzaW9uJykgcmV0dXJuIG51bGxcbiAgbGV0IHRpdGxlID0gbnVsbFxuICBsZXQgY29sb3IgPSBudWxsXG4gIGxldCB0dXJucyA9IDBcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzLnNsaWNlKDEpKSB7XG4gICAgY29uc3QgZXZlbnQgPSBwYXJzZUxpbmUobGluZSlcbiAgICBpZiAoIWV2ZW50KSBjb250aW51ZVxuICAgIGlmIChldmVudC50eXBlID09PSAndGl0bGUnKSB0aXRsZSA9IGV2ZW50LmRhdGEudGV4dFxuICAgIGlmIChldmVudC50eXBlID09PSAnY29sb3InKSBjb2xvciA9IGV2ZW50LmRhdGEudmFsdWVcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21lc3NhZ2UnICYmIGV2ZW50LmRhdGEubWVzc2FnZT8ucm9sZSA9PT0gJ3VzZXInKSB7XG4gICAgICB0dXJucysrXG4gICAgICBjb25zdCBjb250ZW50ID0gZXZlbnQuZGF0YS5tZXNzYWdlLmNvbnRlbnRcbiAgICAgIGNvbnN0IHRleHQgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpXG4gICAgICAgID8gY29udGVudC5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gJ3RleHQnKS5tYXAoKHApID0+IHAudGV4dCkuam9pbignICcpXG4gICAgICAgIDogU3RyaW5nKGNvbnRlbnQpXG4gICAgICBpZiAoIXRpdGxlICYmIHRleHQudHJpbSgpKSB0aXRsZSA9IHRleHQudHJpbSgpLnNsaWNlKDAsIDIwMClcbiAgICB9XG4gIH1cbiAgaWYgKCF0aXRsZSkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIHsgZmlsZSwgaGVhZGVyLCB0aXRsZSwgY29sb3IsIHR1cm5zLCBhdDogaW5mby5tdGltZU1zIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbGlzdERpcihkaXIpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyKVxuICAgIHJldHVybiBuYW1lcy5maWx0ZXIoKG4pID0+IG4uZW5kc1dpdGgoJy5qc29ubCcpKS5tYXAoKG4pID0+IGpvaW4oZGlyLCBuKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVNlc3Npb24oZmlsZSkge1xuICByZXR1cm4gdW5saW5rKGZpbGUpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2Vzc2lvbnMoeyBzY29wZSwgcm9vdCB9KSB7XG4gIGxldCBmaWxlcyA9IFtdXG4gIGlmIChzY29wZSA9PT0gJ2V2ZXJ5d2hlcmUnKSB7XG4gICAgY29uc3QgcHJvamVjdHNEaXIgPSBqb2luKHBpY29Ib21lKCksICdwcm9qZWN0cycpXG4gICAgbGV0IHByb2plY3RzID0gW11cbiAgICB0cnkge1xuICAgICAgcHJvamVjdHMgPSBhd2FpdCByZWFkZGlyKHByb2plY3RzRGlyKVxuICAgIH0gY2F0Y2gge31cbiAgICBjb25zdCBuZXN0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHByb2plY3RzLm1hcCgocCkgPT4gbGlzdERpcihqb2luKHByb2plY3RzRGlyLCBwLCAnc2Vzc2lvbnMnKSkpLFxuICAgIClcbiAgICBmaWxlcyA9IG5lc3RlZC5mbGF0KClcbiAgfSBlbHNlIHtcbiAgICBmaWxlcyA9IGF3YWl0IGxpc3REaXIoc2Vzc2lvbnNEaXIocm9vdCkpXG4gIH1cbiAgY29uc3QgbWV0YXMgPSBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAoKGYpID0+IHNlc3Npb25NZXRhKGYpLmNhdGNoKCgpID0+IG51bGwpKSlcbiAgcmV0dXJuIG1ldGFzLmZpbHRlcihCb29sZWFuKS5zb3J0KChhLCBiKSA9PiBiLmF0IC0gYS5hdClcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gY29tcGFjdGlvblByb21wdChjdXN0b21JbnN0cnVjdGlvbnMgPSAnJykge1xuICBsZXQgcHJvbXB0ID0gYFlvdXIgdGFzayBpcyB0byBjcmVhdGUgYSBkZXRhaWxlZCBzdW1tYXJ5IG9mIHRoZSBjb252ZXJzYXRpb24gc28gZmFyLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSB1c2VyJ3MgZXhwbGljaXQgcmVxdWVzdHMgYW5kIHlvdXIgcHJldmlvdXMgYWN0aW9ucy4gVGhlIHN1bW1hcnkgbXVzdCBsZXQgd29yayBjb250aW51ZSBzZWFtbGVzc2x5IHdpdGhvdXQgdGhlIG9yaWdpbmFsIG1lc3NhZ2VzLlxuXG5CZWZvcmUgd3JpdGluZyB0aGUgc3VtbWFyeSwgZHJhZnQgeW91ciBhbmFseXNpcyBpbnNpZGUgPGFuYWx5c2lzPiB0YWdzIChpdCB3aWxsIGJlIGRpc2NhcmRlZCk6IGNocm9ub2xvZ2ljYWxseSByZS1yZWFkIHRoZSBjb252ZXJzYXRpb24gYW5kIG5vdGUgdGhlIHVzZXIncyBleHBsaWNpdCByZXF1ZXN0cyBhbmQgaW50ZW50cywgeW91ciBhcHByb2FjaCwga2V5IGRlY2lzaW9ucywgZmlsZSBuYW1lcyBhbmQgY29kZSwgZXJyb3JzIGFuZCBob3cgdGhleSB3ZXJlIGZpeGVkLCBhbmQgYW55IHVzZXIgZmVlZGJhY2sgb3IgY29ycmVjdGlvbnMsIGVzcGVjaWFsbHkgd2hlcmUgdGhlIHVzZXIgdG9sZCB5b3UgdG8gZG8gc29tZXRoaW5nIGRpZmZlcmVudGx5LlxuXG5UaGVuIHByb2R1Y2UgYSA8c3VtbWFyeT4gYmxvY2sgd2l0aCBleGFjdGx5IHRoZXNlIHNlY3Rpb25zOlxuXG4xLiBQcmltYXJ5IFJlcXVlc3QgYW5kIEludGVudDogYWxsIG9mIHRoZSB1c2VyJ3MgZXhwbGljaXQgcmVxdWVzdHMsIGluIGRldGFpbFxuMi4gS2V5IFRlY2huaWNhbCBDb25jZXB0czogdGVjaG5vbG9naWVzLCBwYXR0ZXJucywgYW5kIGRlY2lzaW9ucyBpbiBwbGF5XG4zLiBGaWxlcyBhbmQgQ29kZSBTZWN0aW9uczogZmlsZXMgZXhhbWluZWQsIG1vZGlmaWVkLCBvciBjcmVhdGVkOyB3aHkgZWFjaCBtYXR0ZXJzOyBpbXBvcnRhbnQgc25pcHBldHMgdmVyYmF0aW1cbjQuIEVycm9ycyBhbmQgRml4ZXM6IGV2ZXJ5IGVycm9yIGhpdCBhbmQgaG93IGl0IHdhcyBmaXhlZCwgaW5jbHVkaW5nIHVzZXIgZmVlZGJhY2sgYWJvdXQgaXRcbjUuIEFsbCBVc2VyIE1lc3NhZ2VzOiBldmVyeSBub24tdG9vbC1yZXN1bHQgdXNlciBtZXNzYWdlLCBzbyBpbnRlbnQgYW5kIGl0cyBjaGFuZ2VzIHN1cnZpdmVcbjYuIFBlbmRpbmcgVGFza3M6IGFueXRoaW5nIGV4cGxpY2l0bHkgcmVxdWVzdGVkIGFuZCBub3QgeWV0IGRvbmVcbjcuIEN1cnJlbnQgV29yazogcHJlY2lzZWx5IHdoYXQgd2FzIGluIHByb2dyZXNzIGp1c3Qgbm93LCB3aXRoIGZpbGUgbmFtZXMgYW5kIGRpcmVjdCBxdW90ZXNcbjguIE5leHQgU3RlcDogb25seSBpZiBkaXJlY3RseSBpbiBsaW5lIHdpdGggdGhlIG1vc3QgcmVjZW50IGV4cGxpY2l0IHJlcXVlc3Q7IGluY2x1ZGUgdmVyYmF0aW0gcXVvdGVzIHNob3dpbmcgZXhhY3RseSB3aGVyZSB3b3JrIGxlZnQgb2ZmLCBvciBzdGF0ZSB0aGF0IHRoZXJlIGlzIG5vbmVcblxuVGhpcyBzdW1tYXJpemF0aW9uIHJlcXVlc3QgaXMgbm90IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbjogZG8gbm90IGxpc3QgaXQgYXMgYSB1c2VyIG1lc3NhZ2UsIGNvdW50IGl0IGFzIGEgdGFzaywgb3IgbGV0IGl0IGFwcGVhciBhcyB0aGUgY3VycmVudCB3b3JrIG9yIG5leHQgc3RlcC4gU3VtbWFyaXplIG9ubHkgd2hhdCBjYW1lIGJlZm9yZSBpdC5cblxuUmVzcG9uZCB3aXRoIHBsYWluIHRleHQgb25seTogb25lIDxhbmFseXNpcz4gYmxvY2sgZm9sbG93ZWQgYnkgb25lIDxzdW1tYXJ5PiBibG9jay5gXG5cbiAgaWYgKGN1c3RvbUluc3RydWN0aW9ucy50cmltKCkpIHtcbiAgICBwcm9tcHQgKz0gYFxcblxcbkFkZGl0aW9uYWwgaW5zdHJ1Y3Rpb25zOlxcbiR7Y3VzdG9tSW5zdHJ1Y3Rpb25zLnRyaW0oKX1gXG4gIH1cbiAgcmV0dXJuIHByb21wdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Q29tcGFjdFN1bW1hcnkocmF3KSB7XG4gIGxldCBmb3JtYXR0ZWQgPSByYXcucmVwbGFjZSgvPGFuYWx5c2lzPltcXHNcXFNdKj88XFwvYW5hbHlzaXM+LywgJycpXG4gIGNvbnN0IG1hdGNoID0gZm9ybWF0dGVkLm1hdGNoKC88c3VtbWFyeT4oW1xcc1xcU10qPyk8XFwvc3VtbWFyeT4vKVxuICBpZiAobWF0Y2gpIGZvcm1hdHRlZCA9IG1hdGNoWzFdXG4gIHJldHVybiBmb3JtYXR0ZWQucmVwbGFjZSgvXFxuXFxuKy9nLCAnXFxuXFxuJykudHJpbSgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250aW51YXRpb25NZXNzYWdlKHN1bW1hcnksIHsgc2Vzc2lvbkZpbGUsIHJlY2VudEtlcHQgfSA9IHt9KSB7XG4gIGxldCB0ZXh0ID0gYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSBUaGUgZWFybGllciBwb3J0aW9uIG9mIHRoaXMgY29udmVyc2F0aW9uIHdhcyBjb21wYWN0ZWQgdG8gZnJlZSBjb250ZXh0LiBTdW1tYXJ5IG9mIHdoYXQgY2FtZSBiZWZvcmU6XFxuXFxuJHtzdW1tYXJ5fWBcbiAgaWYgKHNlc3Npb25GaWxlKSB7XG4gICAgdGV4dCArPSBgXFxuXFxuVGhlIGNvbXBsZXRlIHByZS1jb21wYWN0aW9uIGhpc3RvcnkgaXMgcHJlc2VydmVkIGF0ICR7c2Vzc2lvbkZpbGV9IChqc29ubCwgb25lIGV2ZW50IHBlciBsaW5lKS4gSWYgeW91IG5lZWQgZXhhY3QgZGV0YWlscyBmcm9tIGJlZm9yZSBjb21wYWN0aW9uLCBzdWNoIGFzIGNvZGUgeW91IGdlbmVyYXRlZCBvciBwcmVjaXNlIGVycm9yIHRleHQsIHJlYWQgdGhhdCBmaWxlIHdpdGggeW91ciB0b29scy5gXG4gIH1cbiAgaWYgKHJlY2VudEtlcHQpIHtcbiAgICB0ZXh0ICs9IGBcXG5cXG5UaGUgbW9zdCByZWNlbnQgbWVzc2FnZXMgZm9sbG93IHZlcmJhdGltLmBcbiAgfVxuICB0ZXh0ICs9IGBcXG5cXG5Db250aW51ZSBleGFjdGx5IHdoZXJlIHRoaW5ncyBsZWZ0IG9mZi4gRG8gbm90IHJlY2FwLCBhY2tub3dsZWRnZSB0aGlzIHN1bW1hcnksIG9yIHJlLWFzayBzZXR0bGVkIHF1ZXN0aW9ucy5gXG4gIHJldHVybiB0ZXh0XG59XG4iLCAiaW1wb3J0IHsgY29udGludWF0aW9uTWVzc2FnZSB9IGZyb20gJy4vY29tcGFjdGlvbi5qcydcblxuY29uc3QgRFJPUFBJTkdfTU9ERVMgPSBbJ2JvdGgnLCAnY2hhdCcsICdzdW1tYXJ5J11cblxuZnVuY3Rpb24gYWN0aXZlUmV3aW5kcyhldmVudHMpIHtcbiAgY29uc3QgY2FuY2VsZWQgPSBuZXcgU2V0KClcbiAgZm9yIChjb25zdCBlIG9mIGV2ZW50cykge1xuICAgIGlmIChlLnR5cGUgPT09ICdyZXdpbmRfdW5kbycpIGNhbmNlbGVkLmFkZChlLmRhdGEucmV3aW5kSWQpXG4gIH1cbiAgcmV0dXJuIGV2ZW50cy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ3Jld2luZCcgJiYgIWNhbmNlbGVkLmhhcyhlLmlkKSlcbn1cblxuZnVuY3Rpb24gZHJvcHBlZElkcyhldmVudHMpIHtcbiAgY29uc3QgZHJvcHBlZCA9IG5ldyBTZXQoKVxuICBjb25zdCBpbmRleCA9IG5ldyBNYXAoZXZlbnRzLm1hcCgoZSwgaSkgPT4gW2UuaWQsIGldKSlcbiAgZm9yIChjb25zdCByZXdpbmQgb2YgYWN0aXZlUmV3aW5kcyhldmVudHMpKSB7XG4gICAgaWYgKCFEUk9QUElOR19NT0RFUy5pbmNsdWRlcyhyZXdpbmQuZGF0YS5tb2RlKSkgY29udGludWVcbiAgICBjb25zdCBmcm9tID0gaW5kZXguZ2V0KHJld2luZC5kYXRhLnRhcmdldClcbiAgICBjb25zdCB0byA9IGluZGV4LmdldChyZXdpbmQuaWQpXG4gICAgaWYgKGZyb20gPT09IHVuZGVmaW5lZCB8fCB0byA9PT0gdW5kZWZpbmVkKSBjb250aW51ZVxuICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDwgdG87IGkrKykgZHJvcHBlZC5hZGQoZXZlbnRzW2ldLmlkKVxuICB9XG4gIHJldHVybiBkcm9wcGVkXG59XG5cbmZ1bmN0aW9uIGFkZFVzYWdlSW50byh0b3RhbCwgdXNhZ2UpIHtcbiAgdG90YWwucHJvbXB0VG9rZW5zICs9IHVzYWdlLnByb21wdFRva2VucyB8fCAwXG4gIHRvdGFsLmNvbXBsZXRpb25Ub2tlbnMgKz0gdXNhZ2UuY29tcGxldGlvblRva2VucyB8fCAwXG4gIHRvdGFsLnRvdGFsVG9rZW5zICs9IHVzYWdlLnRvdGFsVG9rZW5zIHx8IDBcbiAgdG90YWwuY2FjaGVkVG9rZW5zICs9IHVzYWdlLmNhY2hlZFRva2VucyB8fCAwXG4gIHRvdGFsLnRob3VnaHRUb2tlbnMgKz0gdXNhZ2UudGhvdWdodFRva2VucyB8fCAwXG59XG5cbmZ1bmN0aW9uIGVtcHR5VXNhZ2UoKSB7XG4gIHJldHVybiB7IHByb21wdFRva2VuczogMCwgY29tcGxldGlvblRva2VuczogMCwgdG90YWxUb2tlbnM6IDAsIGNhY2hlZFRva2VuczogMCwgdGhvdWdodFRva2VuczogMCB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhyYXcpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyYXcpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IF9yYXc6IHJhdyB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaEhpc3Rvcnkoc3RhdGUsIG1lc3NhZ2UsIGV2ZW50SWQpIHtcbiAgc3RhdGUucHJvdmlkZXJIaXN0b3J5LnB1c2gobWVzc2FnZSlcbiAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzLnB1c2goZXZlbnRJZClcbn1cblxuZnVuY3Rpb24gZm9sZE1lc3NhZ2Uoc3RhdGUsIGV2ZW50KSB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2VcbiAgaWYgKCFtZXNzYWdlIHx8IG1lc3NhZ2Uucm9sZSA9PT0gJ3N5c3RlbScpIHJldHVyblxuICBwdXNoSGlzdG9yeShzdGF0ZSwgbWVzc2FnZSwgZXZlbnQuaWQpXG5cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInKSB7XG4gICAgY29uc3QgdGV4dCA9IEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KVxuICAgICAgPyBtZXNzYWdlLmNvbnRlbnRcbiAgICAgICAgICAubWFwKChwKSA9PiAocC50eXBlID09PSAndGV4dCcgPyBwLnRleHQgOiBgW2ltYWdlOiAke1N0cmluZyhwLnNvdXJjZT8ucGF0aCB8fCAnJykuc3BsaXQoJy8nKS5wb3AoKSB8fCAnYXR0YWNoZWQnfV1gKSlcbiAgICAgICAgICAuam9pbignJylcbiAgICAgIDogU3RyaW5nKG1lc3NhZ2UuY29udGVudClcbiAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAndXNlcicsIHRleHQsIGNvbnRlbnQ6IG1lc3NhZ2UuY29udGVudCwgZXZlbnRJZDogZXZlbnQuaWQgfSlcbiAgICByZXR1cm5cbiAgfVxuICBpZiAobWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgIGlmIChtZXNzYWdlLmNvbnRlbnQpIHtcbiAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0OiBtZXNzYWdlLmNvbnRlbnQsIG1vZGVsOiBzdGF0ZS5tb2RlbCB9KVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNhbGwgb2YgbWVzc2FnZS50b29sX2NhbGxzIHx8IFtdKSB7XG4gICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICBraW5kOiAndG9vbCcsXG4gICAgICAgIGNhbGxJZDogY2FsbC5pZCxcbiAgICAgICAgbmFtZTogY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBhcmdzOiBwYXJzZUFyZ3MoY2FsbC5mdW5jdGlvbi5hcmd1bWVudHMpLFxuICAgICAgICB0aXRsZTogY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBzdGF0dXM6ICdkb25lJyxcbiAgICAgICAgZXZlbnRJZDogZXZlbnQuaWQsXG4gICAgICB9XG4gICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goaXRlbSlcbiAgICAgIHN0YXRlLnRvb2xJdGVtcy5zZXQoY2FsbC5pZCwgaXRlbSlcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3Rvb2wnKSB7XG4gICAgY29uc3QgaXRlbSA9IHN0YXRlLnRvb2xJdGVtcy5nZXQobWVzc2FnZS50b29sX2NhbGxfaWQpXG4gICAgaWYgKGl0ZW0pIGl0ZW0ucmVzdWx0VGV4dCA9IFN0cmluZyhtZXNzYWdlLmNvbnRlbnQpXG4gIH1cbn1cblxuZnVuY3Rpb24gZm9sZFJld2luZChzdGF0ZSwgZXZlbnQpIHtcbiAgY29uc3QgeyBtb2RlLCBzdW1tYXJ5VGV4dCwgcmV2ZXJ0ZWQgPSBbXSB9ID0gZXZlbnQuZGF0YVxuICBmb3IgKGNvbnN0IGNhbGxJZCBvZiByZXZlcnRlZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KGNhbGxJZClcbiAgICBpZiAoaXRlbSkgaXRlbS5zdGF0dXMgPSAncmV2ZXJ0ZWQnXG4gIH1cbiAgaWYgKG1vZGUgPT09ICdzdW1tYXJ5JyAmJiBzdW1tYXJ5VGV4dCkge1xuICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdzdW1tYXJ5Jywgc291cmNlOiAncmV3aW5kJywgdGV4dDogc3VtbWFyeVRleHQgfSlcbiAgICBwdXNoSGlzdG9yeShzdGF0ZSwge1xuICAgICAgcm9sZTogJ2Fzc2lzdGFudCcsXG4gICAgICBjb250ZW50OiBgW3N1bW1hcnkgb2YgdGhlIHJld291bmQgY29udmVyc2F0aW9uXVxcbiR7c3VtbWFyeVRleHR9YCxcbiAgICB9LCBldmVudC5pZClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlU3RhdGUoZXZlbnRzKSB7XG4gIGNvbnN0IGRyb3BwZWQgPSBkcm9wcGVkSWRzKGV2ZW50cylcbiAgY29uc3QgY2FuY2VsZWRVbmRvVGFyZ2V0cyA9IG5ldyBTZXQoXG4gICAgZXZlbnRzLmZpbHRlcigoZSkgPT4gZS50eXBlID09PSAncmV3aW5kX3VuZG8nKS5tYXAoKGUpID0+IGUuZGF0YS5yZXdpbmRJZCksXG4gIClcblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICB0cmFuc2NyaXB0OiBbXSxcbiAgICBwcm92aWRlckhpc3Rvcnk6IFtdLFxuICAgIGhpc3RvcnlFdmVudElkczogW10sXG4gICAgbW9kZWw6IG51bGwsXG4gICAgZWZmb3J0OiB1bmRlZmluZWQsXG4gICAgdXNhZ2U6IGVtcHR5VXNhZ2UoKSxcbiAgICB1c2FnZUJ5TW9kZWw6IHt9LFxuICAgIHVzYWdlQWN0aXZlOiBlbXB0eVVzYWdlKCksXG4gICAgdXNhZ2VBY3RpdmVCeU1vZGVsOiB7fSxcbiAgICBsYXN0UHJvbXB0VG9rZW5zOiAwLFxuICAgIGxhc3RQcm9tcHRNb2RlbDogbnVsbCxcbiAgICBsb2FkZWRDb250ZXh0OiBuZXcgU2V0KCksXG4gICAgdG9vbEl0ZW1zOiBuZXcgTWFwKCksXG4gIH1cblxuICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgIGlmIChldmVudC50eXBlID09PSAndXNhZ2UnKSB7XG4gICAgICBhZGRVc2FnZUludG8oc3RhdGUudXNhZ2UsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICBjb25zdCBieU1vZGVsID0gKHN0YXRlLnVzYWdlQnlNb2RlbFtldmVudC5kYXRhLm1vZGVsXSB8fD0gZW1wdHlVc2FnZSgpKVxuICAgICAgYWRkVXNhZ2VJbnRvKGJ5TW9kZWwsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICBpZiAoIWRyb3BwZWQuaGFzKGV2ZW50LmlkKSkge1xuICAgICAgICBhZGRVc2FnZUludG8oc3RhdGUudXNhZ2VBY3RpdmUsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICAgIGNvbnN0IGFjdGl2ZUJ5TW9kZWwgPSAoc3RhdGUudXNhZ2VBY3RpdmVCeU1vZGVsW2V2ZW50LmRhdGEubW9kZWxdIHx8PSBlbXB0eVVzYWdlKCkpXG4gICAgICAgIGFkZFVzYWdlSW50byhhY3RpdmVCeU1vZGVsLCBldmVudC5kYXRhLnVzYWdlKVxuICAgICAgICAvLyBvbmx5IGV2ZW50cyB0aGF0IHJlY29yZGVkIHRoZSBmaW5hbCByZXF1ZXN0J3Mgc2l6ZSBjYW4gZHJpdmUgdGhlXG4gICAgICAgIC8vIGNvbnRleHQgbWV0ZXI7IG9sZGVyIGN1bXVsYXRpdmUtb25seSBldmVudHMgd291bGQgb3ZlcnN0YXRlIGl0XG4gICAgICAgIGlmIChldmVudC5kYXRhLmxhc3RQcm9tcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgPSBldmVudC5kYXRhLmxhc3RQcm9tcHRcbiAgICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0TW9kZWwgPSBldmVudC5kYXRhLm1vZGVsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChkcm9wcGVkLmhhcyhldmVudC5pZCkpIGNvbnRpbnVlXG5cbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICBmb2xkTWVzc2FnZShzdGF0ZSwgZXZlbnQpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0b29sX21ldGEnOiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KGV2ZW50LmRhdGEuY2FsbElkKVxuICAgICAgICBpZiAoaXRlbSkgT2JqZWN0LmFzc2lnbihpdGVtLCBldmVudC5kYXRhLCB7IGtpbmQ6ICd0b29sJywgY2FsbElkOiBpdGVtLmNhbGxJZCB9KVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnaW50ZXJydXB0Jzoge1xuICAgICAgICBjb25zdCBsYXN0ID0gc3RhdGUudHJhbnNjcmlwdC5hdCgtMSlcbiAgICAgICAgaWYgKGxhc3Q/LmtpbmQgPT09ICdhc3Npc3RhbnQnKSBsYXN0LmludGVycnVwdGVkID0gdHJ1ZVxuICAgICAgICBpZiAobGFzdD8ua2luZCA9PT0gJ3Rvb2wnICYmIGxhc3Quc3RhdHVzID09PSAncnVubmluZycpIGxhc3Quc3RhdHVzID0gJ2ludGVycnVwdGVkJ1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnbW9kZWxfc3dpdGNoJzpcbiAgICAgICAgc3RhdGUubW9kZWwgPSBldmVudC5kYXRhLnRvXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdlZmZvcnQnOlxuICAgICAgICBzdGF0ZS5lZmZvcnQgPSBldmVudC5kYXRhLnRvXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0aXRsZSc6XG4gICAgICAgIHN0YXRlLnRpdGxlID0gZXZlbnQuZGF0YS50ZXh0XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjb2xvcic6XG4gICAgICAgIHN0YXRlLmNvbG9yID0gZXZlbnQuZGF0YS52YWx1ZVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAncmV3aW5kJzpcbiAgICAgICAgaWYgKCFjYW5jZWxlZFVuZG9UYXJnZXRzLmhhcyhldmVudC5pZCkpIGZvbGRSZXdpbmQoc3RhdGUsIGV2ZW50KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnY29tcGFjdCc6IHtcbiAgICAgICAgY29uc3QgeyBzdW1tYXJ5LCBrZWVwRnJvbSwgc2Vzc2lvbkZpbGUgfSA9IGV2ZW50LmRhdGFcbiAgICAgICAgaWYgKGtlZXBGcm9tICE9PSB1bmRlZmluZWQgfHwgc2Vzc2lvbkZpbGUpIHtcbiAgICAgICAgICBjb25zdCBpZHggPSBrZWVwRnJvbSA/IHN0YXRlLmhpc3RvcnlFdmVudElkcy5pbmRleE9mKGtlZXBGcm9tKSA6IC0xXG4gICAgICAgICAgY29uc3Qga2VwdCA9IGlkeCA+PSAwID8gc3RhdGUucHJvdmlkZXJIaXN0b3J5LnNsaWNlKGlkeCkgOiBbXVxuICAgICAgICAgIGNvbnN0IGtlcHRJZHMgPSBpZHggPj0gMCA/IHN0YXRlLmhpc3RvcnlFdmVudElkcy5zbGljZShpZHgpIDogW11cbiAgICAgICAgICBzdGF0ZS5wcm92aWRlckhpc3RvcnkgPSBbXG4gICAgICAgICAgICB7IHJvbGU6ICd1c2VyJywgY29udGVudDogY29udGludWF0aW9uTWVzc2FnZShzdW1tYXJ5LCB7IHNlc3Npb25GaWxlLCByZWNlbnRLZXB0OiBrZXB0Lmxlbmd0aCA+IDAgfSkgfSxcbiAgICAgICAgICAgIC4uLmtlcHQsXG4gICAgICAgICAgXVxuICAgICAgICAgIHN0YXRlLmhpc3RvcnlFdmVudElkcyA9IFtudWxsLCAuLi5rZXB0SWRzXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLnByb3ZpZGVySGlzdG9yeSA9IFtcbiAgICAgICAgICAgIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiBgW2NvbnZlcnNhdGlvbiBzdW1tYXJ5XVxcbiR7c3VtbWFyeX1gIH0sXG4gICAgICAgICAgICB7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiAnR290IGl0LiBDb250aW51aW5nIGZyb20gdGhhdCBzdW1tYXJ5LicgfSxcbiAgICAgICAgICBdXG4gICAgICAgICAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzID0gW251bGwsIG51bGxdXG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ3N1bW1hcnknLCBzb3VyY2U6ICdjb21wYWN0JywgdGV4dDogc3VtbWFyeSB9KVxuICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zID0gMFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0ID0gW11cbiAgICAgICAgc3RhdGUucHJvdmlkZXJIaXN0b3J5ID0gW11cbiAgICAgICAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzID0gW11cbiAgICAgICAgc3RhdGUudG9vbEl0ZW1zID0gbmV3IE1hcCgpXG4gICAgICAgIHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgPSAwXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjb250ZXh0X2ZpbGUnOlxuICAgICAgICBzdGF0ZS5sb2FkZWRDb250ZXh0LmFkZChldmVudC5kYXRhLnBhdGgpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdza2lsbCc6XG4gICAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdza2lsbCcsIG5hbWU6IGV2ZW50LmRhdGEubmFtZSB9KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndGhvdWdodHMnOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAndGhvdWdodHMnLCB0ZXh0OiBldmVudC5kYXRhLnRleHQgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NoZWxsX25vdGUnOlxuICAgICAgY2FzZSAnc3lzdGVtX25vdGUnOlxuICAgICAgICBwdXNoSGlzdG9yeShzdGF0ZSwgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IGV2ZW50LmRhdGEudGV4dCB9LCBldmVudC5pZClcbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ25vdGljZScsIHRleHQ6IGV2ZW50LmRhdGEudGV4dC5zcGxpdCgnXFxuJylbMF0gfSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJFbnRyaWVzKHN0YXRlKSB7XG4gIGNvbnN0IGVudHJpZXMgPSBbXVxuICBzdGF0ZS50cmFuc2NyaXB0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGl0ZW0ua2luZCA9PT0gJ3VzZXInKSBlbnRyaWVzLnB1c2goeyB0ZXh0OiBpdGVtLnRleHQsIGNvbnRlbnQ6IGl0ZW0uY29udGVudCwgaW5kZXgsIGV2ZW50SWQ6IGl0ZW0uZXZlbnRJZCB9KVxuICB9KVxuICByZXR1cm4gZW50cmllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV3aW5kU3RhdHMoc3RhdGUsIGluZGV4KSB7XG4gIGNvbnN0IHRhaWwgPSBzdGF0ZS50cmFuc2NyaXB0LnNsaWNlKGluZGV4KVxuICByZXR1cm4ge1xuICAgIG1zZ3M6IHRhaWwubGVuZ3RoLFxuICAgIGVkaXRzOiB0YWlsLmZpbHRlcigobSkgPT4gbS5raW5kID09PSAndG9vbCcgJiYgbS5yZXZlcnQgJiYgbS5zdGF0dXMgIT09ICdyZXZlcnRlZCcpLFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgY29tcG9zZSwgc2NvcGUsIG1vZGVsLCBub1Rvb2xzQ2FsbGVkLCBJbmhlcml0LCBnZXRUZXh0IH0gZnJvbSAnQHByc20vYWknXG5cbmFzeW5jIGZ1bmN0aW9uIGh5ZHJhdGVQYXJ0KHBhcnQpIHtcbiAgaWYgKHBhcnQudHlwZSAhPT0gJ2ltYWdlJyB8fCBwYXJ0LnNvdXJjZT8ua2luZCAhPT0gJ3BhdGgnKSByZXR1cm4gcGFydFxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkRmlsZShwYXJ0LnNvdXJjZS5wYXRoKVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgc291cmNlOiB7IGtpbmQ6ICdiYXNlNjQnLCBtZWRpYVR5cGU6IHBhcnQuc291cmNlLm1lZGlhVHlwZSwgZGF0YTogZGF0YS50b1N0cmluZygnYmFzZTY0JykgfSxcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IHR5cGU6ICd0ZXh0JywgdGV4dDogYFtpbWFnZSB1bmF2YWlsYWJsZTogJHtwYXJ0LnNvdXJjZS5wYXRofV1gIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlkcmF0ZUltYWdlcyhoaXN0b3J5KSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICBoaXN0b3J5Lm1hcChhc3luYyAobWVzc2FnZSkgPT5cbiAgICAgIEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KVxuICAgICAgICA/IHsgLi4ubWVzc2FnZSwgY29udGVudDogYXdhaXQgUHJvbWlzZS5hbGwobWVzc2FnZS5jb250ZW50Lm1hcChoeWRyYXRlUGFydCkpIH1cbiAgICAgICAgOiBtZXNzYWdlLFxuICAgICksXG4gIClcbn1cblxuY29uc3QgU1RBTExfTVMgPSA5MDAwMFxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29tcGFjdEhpc3RvcnkoeyBoaXN0b3J5LCBtb2RlbE5hbWUsIGF1dGgsIHByb21wdCwgc2lnbmFsLCBvblN0cmVhbSB9KSB7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNvbXBvc2UoXG4gICAgbW9kZWwoe1xuICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgIC4uLihhdXRoPy5hcGlLZXkgJiYgeyBhcGlLZXk6IGF1dGguYXBpS2V5IH0pLFxuICAgICAgLi4uKGF1dGg/LmhlYWRlcnMgJiYgeyBoZWFkZXJzOiBhdXRoLmhlYWRlcnMgfSksXG4gICAgfSksXG4gICkoe1xuICAgIGhpc3Rvcnk6IFsuLi5oaXN0b3J5LmZpbHRlcigobSkgPT4gbS5yb2xlICE9PSAnc3lzdGVtJyksIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiBwcm9tcHQgfV0sXG4gICAgdG9vbHM6IFtdLFxuICAgIGFib3J0U2lnbmFsOiBzaWduYWwsXG4gICAgLi4uKG9uU3RyZWFtICYmIHsgc3RyZWFtOiBvblN0cmVhbSB9KSxcbiAgfSlcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgdGhyb3cgbmV3IEVycm9yKCdjb21wYWN0aW9uIGNhbmNlbGxlZCcpXG4gIHJldHVybiBnZXRUZXh0KG91dC5sYXN0UmVzcG9uc2U/LmNvbnRlbnQgfHwgJycpLnRyaW0oKVxufVxuXG4vLyB0aGUgc3VtbWFyeSBoYXMgYSBmaXhlZCBzaGFwZTogYW4gPGFuYWx5c2lzPiBzY3JhdGNocGFkLCB0aGVuIDggbnVtYmVyZWRcbi8vIHNlY3Rpb25zOyB3YXRjaGluZyBoZWFkZXJzIHN0cmVhbSBieSBpcyByZWFsIHByb2dyZXNzLCBub3QgYW4gZXN0aW1hdGVcbmV4cG9ydCBmdW5jdGlvbiBjb21wYWN0UHJvZ3Jlc3Moc3RyZWFtZWQpIHtcbiAgY29uc3QgY2hhcnMgPSBzdHJlYW1lZC5sZW5ndGhcbiAgY29uc3QgYWZ0ZXJBbmFseXNpcyA9IHN0cmVhbWVkLnNwbGl0KCc8L2FuYWx5c2lzPicpWzFdID8/IHN0cmVhbWVkLnNwbGl0KCc8c3VtbWFyeT4nKVsxXVxuICBpZiAoYWZ0ZXJBbmFseXNpcyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBwaGFzZTogJ2FuYWx5emluZycsIHNlY3Rpb246IDAsIGNoYXJzIH1cbiAgY29uc3Qgc2VjdGlvbnMgPSAoYWZ0ZXJBbmFseXNpcy5tYXRjaCgvXlxccypcXGQrXFwuXFxzL2dtKSB8fCBbXSkubGVuZ3RoXG4gIGlmIChzZWN0aW9ucyA9PT0gMCkgcmV0dXJuIHsgcGhhc2U6ICdhbmFseXppbmcnLCBzZWN0aW9uOiAwLCBjaGFycyB9XG4gIHJldHVybiB7IHBoYXNlOiAnd3JpdGluZycsIHNlY3Rpb246IE1hdGgubWluKDgsIHNlY3Rpb25zKSwgY2hhcnMgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VtbWFyaXplVGV4dCh7IHRleHQsIG1vZGVsTmFtZSB9KSB7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNvbXBvc2UoXG4gICAgbW9kZWwoe1xuICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgIHN5c3RlbTogJ1N1bW1hcml6ZSB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbiBleGNlcnB0IGluIDItNCBkZW5zZSBzZW50ZW5jZXMuIENhcHR1cmUgZGVjaXNpb25zLCBjaGFuZ2VzIG1hZGUsIGFuZCBvcGVuIHF1ZXN0aW9ucy4gT3V0cHV0IG9ubHkgdGhlIHN1bW1hcnkuJyxcbiAgICB9KSxcbiAgKSh0ZXh0LnNsaWNlKDAsIDMwMDAwKSlcbiAgcmV0dXJuIGdldFRleHQob3V0Lmxhc3RSZXNwb25zZT8uY29udGVudCB8fCAnJykudHJpbSgpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5UdXJuKHsgaGlzdG9yeSwgdG9vbHMsIHJlY29yZGVyLCBtb2RlbE5hbWUsIGVmZm9ydCwgYXV0aCwgc3lzdGVtLCBzaWduYWwsIG9uU3RyZWFtLCBzdGFsbE1zID0gU1RBTExfTVMgfSkge1xuICBjb25zdCBjb2xsZWN0ZWQgPSBbXVxuICBsZXQgcm91bmRUZXh0ID0gJydcbiAgbGV0IHVzYWdlU2VlbiA9IG51bGxcbiAgbGV0IHN0YWxsZWQgPSBmYWxzZVxuICAvLyB1c2FnZSBldmVudHMgY2FycnkgY3VtdWxhdGl2ZSB0b3RhbHMgcGVyIHJlcXVlc3Qgcm91bmQsIHNvIGNvbnNlY3V0aXZlXG4gIC8vIGRlbHRhcyByZWNvdmVyIGVhY2ggcm91bmQncyB0cnVlIGlucHV0IHNpemU7IHRoZSBsYXN0IGRlbHRhIGlzIHRoZSBzaXplXG4gIC8vIG9mIHRoZSBjdXJyZW50IGNvbnRleHQgYXMgYWN0dWFsbHkgc2VudFxuICBsZXQgY3VtdWxhdGl2ZVByb21wdCA9IDBcbiAgbGV0IGxhc3RQcm9tcHRUb2tlbnMgPSAwXG5cbiAgY29uc3QgaW50ZXJuYWwgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgY29uc3Qgb25Vc2VyQWJvcnQgPSAoKSA9PiBpbnRlcm5hbC5hYm9ydCgpXG4gIGlmIChzaWduYWw/LmFib3J0ZWQpIGludGVybmFsLmFib3J0KClcbiAgZWxzZSBzaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25Vc2VyQWJvcnQsIHsgb25jZTogdHJ1ZSB9KVxuXG4gIGxldCB3YXRjaGRvZyA9IG51bGxcbiAgY29uc3QgYXJtID0gKCkgPT4ge1xuICAgIGNsZWFyVGltZW91dCh3YXRjaGRvZylcbiAgICB3YXRjaGRvZyA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc3RhbGxlZCA9IHRydWVcbiAgICAgIGludGVybmFsLmFib3J0KClcbiAgICB9LCBzdGFsbE1zKVxuICB9XG5cbiAgY29uc3Qgc3RyZWFtID0gKGV2ZW50KSA9PiB7XG4gICAgYXJtKClcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICByb3VuZFRleHQgKz0gZXZlbnQuY29udGVudFxuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY2FsbHNfcmVhZHknKSB7XG4gICAgICBjb2xsZWN0ZWQucHVzaCh7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiByb3VuZFRleHQsIHRvb2xfY2FsbHM6IGV2ZW50LmNhbGxzIH0pXG4gICAgICByb3VuZFRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXhlY3V0aW5nJykge1xuICAgICAgcmVjb3JkZXIuY3VycmVudENhbGwgPSBldmVudC5jYWxsXG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9jb21wbGV0ZScpIHtcbiAgICAgIGNvbGxlY3RlZC5wdXNoKHsgcm9sZTogJ3Rvb2wnLCB0b29sX2NhbGxfaWQ6IGV2ZW50LmNhbGwuaWQsIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KGV2ZW50LnJlc3VsdCkgfSlcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJykge1xuICAgICAgY29sbGVjdGVkLnB1c2goeyByb2xlOiAndG9vbCcsIHRvb2xfY2FsbF9pZDogZXZlbnQuY2FsbC5pZCwgY29udGVudDogSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogZXZlbnQuZXJyb3IgfSkgfSlcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd1c2FnZScpIHtcbiAgICAgIHVzYWdlU2VlbiA9IGV2ZW50LnVzYWdlXG4gICAgICBjb25zdCBwcm9tcHQgPSBldmVudC51c2FnZT8ucHJvbXB0VG9rZW5zIHx8IDBcbiAgICAgIGxhc3RQcm9tcHRUb2tlbnMgPSBNYXRoLm1heCgwLCBwcm9tcHQgLSBjdW11bGF0aXZlUHJvbXB0KVxuICAgICAgY3VtdWxhdGl2ZVByb21wdCA9IHByb21wdFxuICAgIH1cbiAgICBvblN0cmVhbT8uKGV2ZW50KVxuICB9XG5cbiAgY29uc3QgYmFzZSA9IGhpc3RvcnkubGVuZ3RoXG4gIGNvbnN0IHN0ZXAgPSBjb21wb3NlKFxuICAgIHNjb3BlKFxuICAgICAgeyBpbmhlcml0OiBJbmhlcml0LkNvbnZlcnNhdGlvbiwgc3lzdGVtLCB0b29scywgdW50aWw6IG5vVG9vbHNDYWxsZWQoKSwgc3RyZWFtIH0sXG4gICAgICAoY3R4KSA9PlxuICAgICAgICBtb2RlbCh7XG4gICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAuLi4oZWZmb3J0ICYmIHsgZWZmb3J0IH0pLFxuICAgICAgICAgIC4uLihhdXRoPy5hcGlLZXkgJiYgeyBhcGlLZXk6IGF1dGguYXBpS2V5IH0pLFxuICAgICAgICAgIC4uLihhdXRoPy5oZWFkZXJzICYmIHsgaGVhZGVyczogYXV0aC5oZWFkZXJzIH0pLFxuICAgICAgICB9KSh7IC4uLmN0eCwgYWJvcnRTaWduYWw6IGludGVybmFsLnNpZ25hbCB9KSxcbiAgICApLFxuICApXG5cbiAgY29uc3QgcGFydGlhbE1lc3NhZ2VzID0gKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gWy4uLmNvbGxlY3RlZF1cbiAgICBpZiAocm91bmRUZXh0KSBtZXNzYWdlcy5wdXNoKHsgcm9sZTogJ2Fzc2lzdGFudCcsIGNvbnRlbnQ6IHJvdW5kVGV4dCB9KVxuICAgIHJldHVybiBtZXNzYWdlc1xuICB9XG5cbiAgYXJtKClcbiAgdHJ5IHtcbiAgICBjb25zdCBvdXQgPSBhd2FpdCBzdGVwKHsgaGlzdG9yeTogYXdhaXQgaHlkcmF0ZUltYWdlcyhoaXN0b3J5KSwgdG9vbHM6IFtdIH0pXG4gICAgY29uc3QgaW50ZXJydXB0ZWQgPSAhIXNpZ25hbD8uYWJvcnRlZCB8fCBzdGFsbGVkXG4gICAgaWYgKGludGVycnVwdGVkKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlczogcGFydGlhbE1lc3NhZ2VzKCksIHVzYWdlOiB1c2FnZVNlZW4sIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkLCBzdGFsbGVkIH1cbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZXMgPSBvdXQuaGlzdG9yeS5maWx0ZXIoKG0pID0+IG0ucm9sZSAhPT0gJ3N5c3RlbScpLnNsaWNlKGJhc2UpXG4gICAgcmV0dXJuIHsgbWVzc2FnZXMsIHVzYWdlOiBvdXQudXNhZ2UgfHwgbnVsbCwgbGFzdFByb21wdFRva2VucywgaW50ZXJydXB0ZWQ6IGZhbHNlLCBzdGFsbGVkOiBmYWxzZSB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIubmFtZSA9PT0gJ0Fib3J0RXJyb3InIHx8IGludGVybmFsLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlczogcGFydGlhbE1lc3NhZ2VzKCksIHVzYWdlOiB1c2FnZVNlZW4sIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkOiB0cnVlLCBzdGFsbGVkIH1cbiAgICB9XG4gICAgdGhyb3cgZXJyXG4gIH0gZmluYWxseSB7XG4gICAgY2xlYXJUaW1lb3V0KHdhdGNoZG9nKVxuICAgIHNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvblVzZXJBYm9ydClcbiAgfVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0VGl0bGUobmFtZSwgYXJncyA9IHt9KSB7XG4gIGNvbnN0IGNhbmRpZGF0ZSA9IGFyZ3MucGF0aCB8fCBhcmdzLmNvbW1hbmQgfHwgYXJncy5wYXR0ZXJuIHx8IGFyZ3MudXJsIHx8IGFyZ3MubmFtZVxuICBpZiAodHlwZW9mIGNhbmRpZGF0ZSA9PT0gJ3N0cmluZycgJiYgY2FuZGlkYXRlKSByZXR1cm4gY2FuZGlkYXRlXG4gIGNvbnN0IHJhdyA9IEpTT04uc3RyaW5naWZ5KGFyZ3MpXG4gIGlmICghcmF3IHx8IHJhdyA9PT0gJ3t9JykgcmV0dXJuIG5hbWVcbiAgcmV0dXJuIHJhdy5sZW5ndGggPiA2MCA/IHJhdy5zbGljZSgwLCA2MCkgKyAnXHUyMDI2JyA6IHJhd1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVjb3JkZXIoKSB7XG4gIHJldHVybiB7XG4gICAgY3VycmVudENhbGw6IG51bGwsXG4gICAgZW50cmllczogW10sXG4gICAgcGVuZGluZzogbnVsbCxcbiAgICBiZWdpbihuYW1lLCBhcmdzKSB7XG4gICAgICB0aGlzLnBlbmRpbmcgPSB7XG4gICAgICAgIGNhbGxJZDogdGhpcy5jdXJyZW50Q2FsbD8uaWQgPz8gbnVsbCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdGl0bGU6IGRlZmF1bHRUaXRsZShuYW1lLCBhcmdzKSxcbiAgICAgICAgc3RhdHVzOiAnZG9uZScsXG4gICAgICAgIHN0YXJ0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGV4dHJhKGZpZWxkcykge1xuICAgICAgaWYgKHRoaXMucGVuZGluZykgT2JqZWN0LmFzc2lnbih0aGlzLnBlbmRpbmcsIGZpZWxkcylcbiAgICB9LFxuICAgIGRvbmUoZmllbGRzID0ge30pIHtcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nKSByZXR1cm5cbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5wZW5kaW5nLCBmaWVsZHMsIHtcbiAgICAgICAgZHVyYXRpb25NczogRGF0ZS5ub3coKSAtIHRoaXMucGVuZGluZy5zdGFydGVkQXQsXG4gICAgICB9KVxuICAgICAgZGVsZXRlIHRoaXMucGVuZGluZy5zdGFydGVkQXRcbiAgICAgIGlmICh0aGlzLnBlbmRpbmcuZnVsbE91dHB1dD8ubGVuZ3RoID4gMjAwMDAwKSB7XG4gICAgICAgIHRoaXMucGVuZGluZy5mdWxsT3V0cHV0ID0gdGhpcy5wZW5kaW5nLmZ1bGxPdXRwdXQuc2xpY2UoMCwgMjAwMDAwKSArICdcXG5bdHJ1bmNhdGVkXSdcbiAgICAgIH1cbiAgICAgIHRoaXMuZW50cmllcy5wdXNoKHRoaXMucGVuZGluZylcbiAgICAgIHRoaXMucGVuZGluZyA9IG51bGxcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNvcmRlZChyZWNvcmRlciwgbmFtZSwgZm4pIHtcbiAgcmV0dXJuIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgcmVjb3JkZXIuYmVnaW4obmFtZSwgYXJncylcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oYXJncylcbiAgICAgIGlmICghcmVjb3JkZXIucGVuZGluZz8uZnVsbE91dHB1dCAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7XG4gICAgICAgICAgZnVsbE91dHB1dDogdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcmVjb3JkZXIuZG9uZSgpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWNvcmRlci5kb25lKHsgc3RhdHVzOiAnZXJyb3InLCBlcnJvcjogU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikgfSlcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1BWF9MSU5FUyA9IDIwMDBcbmNvbnN0IE1BWF9MSU5FX0xFTkdUSCA9IDIwMDBcblxuZnVuY3Rpb24gaXNCaW5hcnkoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IE1hdGgubWluKGJ1ZmZlci5sZW5ndGgsIDgwMDApXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYnVmZmVyW2ldID09PSAwKSByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhZCh7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdyZWFkJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlYWQgYSBmaWxlLiBSZXR1cm5zIGxpbmUtbnVtYmVyZWQgY29udGVudC4gVXNlIG9mZnNldC9saW1pdCBmb3IgbGFyZ2UgZmlsZXMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb3IgYWJzb2x1dGUnIH0sXG4gICAgICBvZmZzZXQ6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnMS1pbmRleGVkIGxpbmUgdG8gc3RhcnQgZnJvbScsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBsaW1pdDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdtYXggbGluZXMgdG8gcmV0dXJuJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdGgsIG9mZnNldCA9IDEsIGxpbWl0ID0gTUFYX0xJTkVTIH0pID0+IHtcbiAgICAgIGNvbnN0IGZ1bGwgPSByZXNvbHZlKGN3ZCwgcGF0aClcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdGggfSlcbiAgICAgIGNvbnN0IGJ1ZiA9IGF3YWl0IHJlYWRGaWxlKGZ1bGwpXG4gICAgICBpZiAoaXNCaW5hcnkoYnVmKSkgdGhyb3cgbmV3IEVycm9yKGAke3BhdGh9IGlzIGEgYmluYXJ5IGZpbGVgKVxuICAgICAgY29uc3QgbGluZXMgPSBidWYudG9TdHJpbmcoJ3V0Zi04Jykuc3BsaXQoJ1xcbicpXG5cbiAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgb2Zmc2V0IC0gMSlcbiAgICAgIGNvbnN0IGNvdW50ID0gTWF0aC5taW4obGltaXQsIE1BWF9MSU5FUylcbiAgICAgIGNvbnN0IHNsaWNlZCA9IGxpbmVzLnNsaWNlKHN0YXJ0LCBzdGFydCArIGNvdW50KVxuICAgICAgY29uc3QgbnVtYmVyZWQgPSBzbGljZWRcbiAgICAgICAgLm1hcCgobGluZSwgaSkgPT4gYCR7c3RhcnQgKyBpICsgMX1cXHQke2xpbmUubGVuZ3RoID4gTUFYX0xJTkVfTEVOR1RIID8gbGluZS5zbGljZSgwLCBNQVhfTElORV9MRU5HVEgpICsgJ1x1MjAyNicgOiBsaW5lfWApXG4gICAgICAgIC5qb2luKCdcXG4nKVxuXG4gICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IHNsaWNlZC5qb2luKCdcXG4nKSB9KVxuICAgICAgY29uc3QgcmVzdWx0ID0geyBjb250ZW50OiBudW1iZXJlZCwgdG90YWxMaW5lczogbGluZXMubGVuZ3RoIH1cbiAgICAgIGlmIChzdGFydCArIGNvdW50IDwgbGluZXMubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdC5ub3RlID0gYHNob3dpbmcgbGluZXMgJHtzdGFydCArIDF9LSR7c3RhcnQgKyBzbGljZWQubGVuZ3RofSBvZiAke2xpbmVzLmxlbmd0aH1gXG4gICAgICB9XG4gICAgICBjb25zdCBjb250ZXh0ID0gdHJhY2tlci5jaGVjayhmdWxsKVxuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoKSByZXN1bHQuY29udGV4dF9mcm9tX2FnZW50c19tZCA9IGNvbnRleHRcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgc3RydWN0dXJlZFBhdGNoIH0gZnJvbSAnZGlmZidcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VEaWZmKHBhdGgsIG9sZFRleHQsIG5ld1RleHQsIGNvbnRleHRMaW5lcyA9IDMpIHtcbiAgY29uc3QgcGF0Y2ggPSBzdHJ1Y3R1cmVkUGF0Y2gocGF0aCwgcGF0aCwgb2xkVGV4dCwgbmV3VGV4dCwgJycsICcnLCB7IGNvbnRleHQ6IGNvbnRleHRMaW5lcyB9KVxuICBsZXQgYWRkaXRpb25zID0gMFxuICBsZXQgZGVsZXRpb25zID0gMFxuICBjb25zdCBodW5rcyA9IHBhdGNoLmh1bmtzLm1hcCgoaCkgPT4gKHtcbiAgICBvbGRTdGFydDogaC5vbGRTdGFydCxcbiAgICBuZXdTdGFydDogaC5uZXdTdGFydCxcbiAgICBsaW5lczogaC5saW5lcy5tYXAoKGxpbmUpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBsaW5lWzBdID09PSAnLScgPyAncmVtb3ZlJyA6IGxpbmVbMF0gPT09ICcrJyA/ICdhZGQnIDogJ2NvbnRleHQnXG4gICAgICBpZiAodHlwZSA9PT0gJ2FkZCcpIGFkZGl0aW9ucysrXG4gICAgICBpZiAodHlwZSA9PT0gJ3JlbW92ZScpIGRlbGV0aW9ucysrXG4gICAgICByZXR1cm4geyB0eXBlLCB0ZXh0OiBsaW5lLnNsaWNlKDEpIH1cbiAgICB9KSxcbiAgfSkpXG4gIHJldHVybiB7IHBhdGgsIGh1bmtzLCBhZGRpdGlvbnMsIGRlbGV0aW9ucyB9XG59XG4iLCAiaW1wb3J0IHsgbWtkaXIsIHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgZGlybmFtZSwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IG1ha2VEaWZmIH0gZnJvbSAnLi9kaWZmLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV3JpdGUoeyBjd2QsIHJlY29yZGVyLCB0cmFja2VyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnd3JpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnV3JpdGUgY29udGVudCB0byBhIGZpbGUsIGNyZWF0aW5nIGl0IGFuZCBhbnkgcGFyZW50IGRpcmVjdG9yaWVzIGlmIG5lZWRlZC4gT3ZlcndyaXRlcyBleGlzdGluZyBjb250ZW50LicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgcGF0aCwgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9yIGFic29sdXRlJyB9LFxuICAgICAgY29udGVudDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgZnVsbCBmaWxlIGNvbnRlbnQgdG8gd3JpdGUnIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXRoLCBjb250ZW50IH0pID0+IHtcbiAgICAgIGNvbnN0IGZ1bGwgPSByZXNvbHZlKGN3ZCwgcGF0aClcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdGggfSlcbiAgICAgIGF3YWl0IG1rZGlyKGRpcm5hbWUoZnVsbCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBsZXQgYmVmb3JlID0gbnVsbFxuICAgICAgdHJ5IHtcbiAgICAgICAgYmVmb3JlID0gYXdhaXQgcmVhZEZpbGUoZnVsbCwgJ3V0Zi04JylcbiAgICAgIH0gY2F0Y2gge31cblxuICAgICAgaWYgKGJlZm9yZSA9PT0gY29udGVudCkge1xuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSwgcGF0aCwgdW5jaGFuZ2VkOiB0cnVlLCBub3RlOiAnZmlsZSBhbHJlYWR5IGhhZCBleGFjdGx5IHRoaXMgY29udGVudCcgfVxuICAgICAgfVxuICAgICAgYXdhaXQgd3JpdGVGaWxlKGZ1bGwsIGNvbnRlbnQsICd1dGYtOCcpXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgb2s6IHRydWUsIHBhdGggfVxuICAgICAgaWYgKGJlZm9yZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBkaWZmID0gbWFrZURpZmYocGF0aCwgYmVmb3JlLCBjb250ZW50KVxuICAgICAgICByZWNvcmRlci5leHRyYSh7IGRpZmYsIHJldmVydDogeyBwYXRoOiBmdWxsLCBiZWZvcmUsIGFmdGVyOiBjb250ZW50IH0gfSlcbiAgICAgICAgcmVzdWx0LmFkZGl0aW9ucyA9IGRpZmYuYWRkaXRpb25zXG4gICAgICAgIHJlc3VsdC5kZWxldGlvbnMgPSBkaWZmLmRlbGV0aW9uc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyByZXZlcnQ6IHsgcGF0aDogZnVsbCwgYmVmb3JlOiAnJywgYWZ0ZXI6IGNvbnRlbnQgfSwgY3JlYXRlZDogdHJ1ZSB9KVxuICAgICAgICByZXN1bHQuY3JlYXRlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0cmFja2VyLmNoZWNrKGZ1bGwpXG4gICAgICBpZiAoY29udGV4dC5sZW5ndGgpIHJlc3VsdC5jb250ZXh0X2Zyb21fYWdlbnRzX21kID0gY29udGV4dFxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBtYWtlRGlmZiB9IGZyb20gJy4vZGlmZi5qcydcblxuY29uc3Qgbm9ybWFsaXplID0gKHMpID0+XG4gIHNcbiAgICAucmVwbGFjZSgvXFxzKyQvZ20sICcnKVxuICAgIC5yZXBsYWNlKC9bXHUyMDE4XHUyMDE5XS9nLCBcIidcIilcbiAgICAucmVwbGFjZSgvW1x1MjAxQ1x1MjAxRF0vZywgJ1wiJylcbiAgICAucmVwbGFjZSgvW1x1MjAxM1x1MjAxNF0vZywgJy0nKVxuXG5mdW5jdGlvbiBsb2NhdGUoY29udGVudCwgb2xkLCBwYXRoKSB7XG4gIGxldCBpbmRleCA9IGNvbnRlbnQuaW5kZXhPZihvbGQpXG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBpZiAoY29udGVudC5pbmRleE9mKG9sZCwgaW5kZXggKyAxKSAhPT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gJHtwYXRofSwgcHJvdmlkZSBtb3JlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gbWFrZSBpdCB1bmlxdWVgKVxuICAgIH1cbiAgICByZXR1cm4geyBpbmRleCwgbGVuZ3RoOiBvbGQubGVuZ3RoLCBjb250ZW50IH1cbiAgfVxuXG4gIGNvbnN0IG5vcm1lZENvbnRlbnQgPSBub3JtYWxpemUoY29udGVudClcbiAgY29uc3Qgbm9ybWVkT2xkID0gbm9ybWFsaXplKG9sZClcbiAgaW5kZXggPSBub3JtZWRDb250ZW50LmluZGV4T2Yobm9ybWVkT2xkKVxuICBpZiAoaW5kZXggPT09IC0xKSB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBub3QgZm91bmQgaW4gJHtwYXRofWApXG4gIGlmIChub3JtZWRDb250ZW50LmluZGV4T2Yobm9ybWVkT2xkLCBpbmRleCArIDEpICE9PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gJHtwYXRofSwgcHJvdmlkZSBtb3JlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gbWFrZSBpdCB1bmlxdWVgKVxuICB9XG4gIHJldHVybiB7IGluZGV4LCBsZW5ndGg6IG5vcm1lZE9sZC5sZW5ndGgsIGNvbnRlbnQ6IG5vcm1lZENvbnRlbnQgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWRpdCh7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdlZGl0JyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlcGxhY2Ugb2xkVGV4dCB3aXRoIG5ld1RleHQgaW4gYSBmaWxlLiBvbGRUZXh0IG11c3QgYXBwZWFyIGV4YWN0bHkgb25jZSB1bmxlc3MgcmVwbGFjZUFsbCBpcyBzZXQuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb3IgYWJzb2x1dGUnIH0sXG4gICAgICBvbGRUZXh0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2V4YWN0IHRleHQgdG8gcmVwbGFjZSwgbXVzdCBiZSB1bmlxdWUgaW4gdGhlIGZpbGUnIH0sXG4gICAgICBuZXdUZXh0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3JlcGxhY2VtZW50IHRleHQnIH0sXG4gICAgICByZXBsYWNlQWxsOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdyZXBsYWNlIGV2ZXJ5IG9jY3VycmVuY2UnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgb2xkVGV4dCwgbmV3VGV4dCwgcmVwbGFjZUFsbCB9KSA9PiB7XG4gICAgICBjb25zdCBmdWxsID0gcmVzb2x2ZShjd2QsIHBhdGgpXG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXRoIH0pXG4gICAgICBjb25zdCBiZWZvcmUgPSBhd2FpdCByZWFkRmlsZShmdWxsLCAndXRmLTgnKVxuXG4gICAgICBsZXQgYWZ0ZXJcbiAgICAgIGlmIChyZXBsYWNlQWxsKSB7XG4gICAgICAgIGlmICghYmVmb3JlLmluY2x1ZGVzKG9sZFRleHQpKSB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBub3QgZm91bmQgaW4gJHtwYXRofWApXG4gICAgICAgIGFmdGVyID0gYmVmb3JlLnNwbGl0KG9sZFRleHQpLmpvaW4obmV3VGV4dClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgaW5kZXgsIGxlbmd0aCwgY29udGVudCB9ID0gbG9jYXRlKGJlZm9yZSwgb2xkVGV4dCwgcGF0aClcbiAgICAgICAgYWZ0ZXIgPSBjb250ZW50LnNsaWNlKDAsIGluZGV4KSArIG5ld1RleHQgKyBjb250ZW50LnNsaWNlKGluZGV4ICsgbGVuZ3RoKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZnVsbCwgYWZ0ZXIsICd1dGYtOCcpXG4gICAgICBjb25zdCBkaWZmID0gbWFrZURpZmYocGF0aCwgYmVmb3JlLCBhZnRlcilcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZGlmZiwgcmV2ZXJ0OiB7IHBhdGg6IGZ1bGwsIGJlZm9yZSwgYWZ0ZXIgfSB9KVxuXG4gICAgICBjb25zdCByZXN1bHQgPSB7IG9rOiB0cnVlLCBwYXRoLCBhZGRpdGlvbnM6IGRpZmYuYWRkaXRpb25zLCBkZWxldGlvbnM6IGRpZmYuZGVsZXRpb25zIH1cbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0cmFja2VyLmNoZWNrKGZ1bGwpXG4gICAgICBpZiAoY29udGV4dC5sZW5ndGgpIHJlc3VsdC5jb250ZXh0X2Zyb21fYWdlbnRzX21kID0gY29udGV4dFxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGVjIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5jb25zdCBNQVhfT1VUUFVUX0NIQVJTID0gMzAwMDBcblxuZnVuY3Rpb24gY2FwcGVkKHRleHQpIHtcbiAgaWYgKHRleHQubGVuZ3RoIDw9IE1BWF9PVVRQVVRfQ0hBUlMpIHJldHVybiB0ZXh0XG4gIHJldHVybiB0ZXh0LnNsaWNlKDAsIE1BWF9PVVRQVVRfQ0hBUlMpICsgYFxcbltvdXRwdXQgdHJ1bmNhdGVkIGF0ICR7TUFYX09VVFBVVF9DSEFSU30gY2hhcmFjdGVyc11gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCYXNoKHsgY3dkLCByZWNvcmRlciwgc2lnbmFsLCBzaGVsbHMgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdiYXNoJyxcbiAgICBkZXNjcmlwdGlvbjogJ1J1biBhIHNoZWxsIGNvbW1hbmQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiBSZXR1cm5zIHN0ZG91dCwgc3RkZXJyLCBhbmQgZXhpdCBjb2RlLiBTZXQgYmFja2dyb3VuZCB0cnVlIGZvciBsb25nLXJ1bm5pbmcgcHJvY2Vzc2VzIGxpa2UgZGV2IHNlcnZlcnM6IGl0IHJldHVybnMgYSBzaGVsbCBpZCBpbW1lZGlhdGVseTsgY2hlY2sgb24gaXQgd2l0aCBzaGVsbF9vdXRwdXQgYW5kIHN0b3AgaXQgd2l0aCBzaGVsbF9raWxsLicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBjb21tYW5kOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBjb21tYW5kIHRvIHJ1bicgfSxcbiAgICAgIHRpbWVvdXQ6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAndGltZW91dCBpbiBtaWxsaXNlY29uZHMsIGRlZmF1bHQgMTIwMDAwJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGJhY2tncm91bmQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ3J1biBpbiB0aGUgYmFja2dyb3VuZCBhbmQgcmV0dXJuIGEgc2hlbGwgaWQgaW1tZWRpYXRlbHknLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogKHsgY29tbWFuZCwgdGltZW91dCwgYmFja2dyb3VuZCB9KSA9PiB7XG4gICAgICBpZiAoYmFja2dyb3VuZCAmJiBzaGVsbHMpIHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogY29tbWFuZCwgYmFja2dyb3VuZDogdHJ1ZSB9KVxuICAgICAgICBjb25zdCB7IGlkIH0gPSBzaGVsbHMuc3RhcnQoY29tbWFuZCwgeyBjd2QgfSlcbiAgICAgICAgcmV0dXJuIHsgc2hlbGxJZDogaWQsIHN0YXR1czogJ3J1bm5pbmcnIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBjb21tYW5kIH0pXG4gICAgICAgIGNvbnN0IGNoaWxkID0gZXhlYyhcbiAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGN3ZCxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHRpbWVvdXQgfHwgMTIwMDAwLFxuICAgICAgICAgICAgbWF4QnVmZmVyOiAxMCAqIDEwMjQgKiAxMDI0LFxuICAgICAgICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCBGT1JDRV9DT0xPUjogJzAnLCBOT19DT0xPUjogJzEnIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyLCBzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXhpdENvZGUgPSBlcnIgPyAodHlwZW9mIGVyci5jb2RlID09PSAnbnVtYmVyJyA/IGVyci5jb2RlIDogMSkgOiAwXG4gICAgICAgICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IFtzdGRvdXQsIHN0ZGVycl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpIH0pXG4gICAgICAgICAgICByZXNvbHZlKHsgc3Rkb3V0OiBjYXBwZWQoc3Rkb3V0IHx8ICcnKSwgc3RkZXJyOiBjYXBwZWQoc3RkZXJyIHx8ICcnKSwgZXhpdENvZGUgfSlcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIGlmIChzaWduYWwpIHtcbiAgICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIGNoaWxkLmtpbGwoKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IGNoaWxkLmtpbGwoKSwgeyBvbmNlOiB0cnVlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IGZnIGZyb20gJ2Zhc3QtZ2xvYidcblxuY29uc3QgTUFYX1JFU1VMVFMgPSAyMDBcblxuZnVuY3Rpb24gcmlwZ3JlcEdsb2IocGF0dGVybiwgY3dkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGFyZ3MgPSBbJy0tZmlsZXMnLCAnLS1oaWRkZW4nLCAnLS1nbG9iJywgcGF0dGVybiwgJy0tZ2xvYicsICchKiovbm9kZV9tb2R1bGVzLyoqJywgJy0tZ2xvYicsICchKiovLmdpdC8qKiddXG4gICAgZXhlY0ZpbGUoJ3JnJywgYXJncywgeyBjd2QsIG1heEJ1ZmZlcjogNTAgKiAxMDI0ICogMTAyNCB9LCAoZXJyLCBzdGRvdXQpID0+IHtcbiAgICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgIT09IDEpIHJlc29sdmUobnVsbClcbiAgICAgIGVsc2UgcmVzb2x2ZShzdGRvdXQgPyBzdGRvdXQuc3BsaXQoJ1xcbicpLmZpbHRlcihCb29sZWFuKSA6IFtdKVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHbG9iKHsgY3dkLCByZWNvcmRlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2dsb2InLFxuICAgIGRlc2NyaXB0aW9uOiAnRmluZCBmaWxlcyBtYXRjaGluZyBhIGdsb2IgcGF0dGVybiwgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiBSZXNwZWN0cyAuZ2l0aWdub3JlOyB1c2UgYmFzaCB0byBsb29rIGluc2lkZSBpZ25vcmVkIHBhdGhzLicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXR0ZXJuOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2dsb2IgcGF0dGVybiwgZS5nLiBzcmMvKiovKi5qcycgfSxcbiAgICAgIG1heFJlc3VsdHM6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnY2FwIG9uIHJldHVybmVkIHBhdGhzLCBkZWZhdWx0IDIwMCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXR0ZXJuLCBtYXhSZXN1bHRzID0gTUFYX1JFU1VMVFMgfSkgPT4ge1xuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0dGVybiB9KVxuICAgICAgbGV0IGZpbGVzID0gYXdhaXQgcmlwZ3JlcEdsb2IocGF0dGVybiwgY3dkKVxuICAgICAgaWYgKGZpbGVzID09PSBudWxsKSB7XG4gICAgICAgIGZpbGVzID0gYXdhaXQgZmcocGF0dGVybiwge1xuICAgICAgICAgIGN3ZCxcbiAgICAgICAgICBkb3Q6IHRydWUsXG4gICAgICAgICAgaWdub3JlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi8uZ2l0LyoqJ10sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IGZpbGVzLmpvaW4oJ1xcbicpIH0pXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlczogZmlsZXMuc2xpY2UoMCwgbWF4UmVzdWx0cyksXG4gICAgICAgIHRvdGFsRm91bmQ6IGZpbGVzLmxlbmd0aCxcbiAgICAgICAgdHJ1bmNhdGVkOiBmaWxlcy5sZW5ndGggPiBtYXhSZXN1bHRzLFxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IHJlbGF0aXZlLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5jb25zdCBNQVhfUkVTVUxUUyA9IDIwMFxuXG5mdW5jdGlvbiBydW5SaXBncmVwKGFyZ3MsIGN3ZCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKGRvbmUpID0+IHtcbiAgICBleGVjRmlsZSgncmcnLCBhcmdzLCB7IGN3ZCwgbWF4QnVmZmVyOiAxMCAqIDEwMjQgKiAxMDI0IH0sIChlcnIsIHN0ZG91dCkgPT4ge1xuICAgICAgZG9uZShlcnIgJiYgIXN0ZG91dCA/ICcnIDogc3Rkb3V0IHx8ICcnKVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHcmVwKHsgY3dkLCByZWNvcmRlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2dyZXAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2VhcmNoIGZpbGUgY29udGVudHMgd2l0aCBhIHJlZ2V4IHVzaW5nIHJpcGdyZXAuIG1vZGUgXCJjb250ZW50XCIgcmV0dXJucyBtYXRjaGluZyBsaW5lcywgXCJmaWxlc1wiIHJldHVybnMgbWF0Y2hpbmcgZmlsZSBwYXRocywgXCJjb3VudFwiIHJldHVybnMgcGVyLWZpbGUgbWF0Y2ggY291bnRzLicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXR0ZXJuOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3JlZ2V4IHBhdHRlcm4nIH0sXG4gICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgb3IgZGlyZWN0b3J5IHRvIHNlYXJjaCwgZGVmYXVsdHMgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Jywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIG1vZGU6IHsgdHlwZTogJ3N0cmluZycsIGVudW06IFsnY29udGVudCcsICdmaWxlcycsICdjb3VudCddLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgZ2xvYjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdmaWx0ZXIgZmlsZXMgYnkgZ2xvYiwgZS5nLiAqLmpzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGlnbm9yZUNhc2U6IHsgdHlwZTogJ2Jvb2xlYW4nLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgY29udGV4dDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdsaW5lcyBvZiBjb250ZXh0IGFyb3VuZCBtYXRjaGVzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIG11bHRpbGluZTogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnYWxsb3cgcGF0dGVybnMgdG8gc3BhbiBsaW5lcycsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBsaW1pdDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdtYXggcmVzdWx0cywgZGVmYXVsdCAyMDAnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0dGVybiwgcGF0aCwgbW9kZSA9ICdjb250ZW50JywgZ2xvYiwgaWdub3JlQ2FzZSwgY29udGV4dCwgbXVsdGlsaW5lLCBsaW1pdCA9IE1BWF9SRVNVTFRTIH0pID0+IHtcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdHRlcm4gfSlcbiAgICAgIGNvbnN0IGFyZ3MgPSBbJy0tbm8taGVhZGluZycsICctLWNvbG9yPW5ldmVyJywgJy0tbWF4LWNvbHVtbnMnLCAnNTAwJywgJy0taGlkZGVuJywgJy0tZ2xvYicsICchKiovLmdpdC8qKiddXG5cbiAgICAgIGlmIChtb2RlID09PSAnZmlsZXMnKSBhcmdzLnB1c2goJy0tZmlsZXMtd2l0aC1tYXRjaGVzJylcbiAgICAgIGVsc2UgaWYgKG1vZGUgPT09ICdjb3VudCcpIGFyZ3MucHVzaCgnLS1jb3VudCcpXG4gICAgICBlbHNlIGFyZ3MucHVzaCgnLS1saW5lLW51bWJlcicpXG5cbiAgICAgIGlmIChpZ25vcmVDYXNlKSBhcmdzLnB1c2goJy0taWdub3JlLWNhc2UnKVxuICAgICAgaWYgKG11bHRpbGluZSkgYXJncy5wdXNoKCctLW11bHRpbGluZScsICctLW11bHRpbGluZS1kb3RhbGwnKVxuICAgICAgaWYgKGdsb2IpIGFyZ3MucHVzaCgnLS1nbG9iJywgZ2xvYilcbiAgICAgIGlmIChtb2RlID09PSAnY29udGVudCcgJiYgY29udGV4dCkgYXJncy5wdXNoKCctQycsIFN0cmluZyhjb250ZXh0KSlcblxuICAgICAgYXJncy5wdXNoKHBhdHRlcm4uc3RhcnRzV2l0aCgnLScpID8gJy1lJyA6ICctLScsIHBhdHRlcm4pXG4gICAgICBhcmdzLnB1c2gocGF0aCA/IHJlc29sdmUoY3dkLCBwYXRoKSA6IGN3ZClcblxuICAgICAgY29uc3Qgc3Rkb3V0ID0gYXdhaXQgcnVuUmlwZ3JlcChhcmdzLCBjd2QpXG4gICAgICBjb25zdCBsaW5lcyA9IHN0ZG91dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pXG4gICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IGxpbmVzLmpvaW4oJ1xcbicpIH0pXG5cbiAgICAgIGNvbnN0IHJlbGF0aXZpemUgPSAobGluZSkgPT4ge1xuICAgICAgICBpZiAobW9kZSA9PT0gJ2ZpbGVzJykgcmV0dXJuIHJlbGF0aXZlKGN3ZCwgbGluZSlcbiAgICAgICAgY29uc3QgbSA9IGxpbmUubWF0Y2goL14oXFwvW146XSspOiguKikkLylcbiAgICAgICAgcmV0dXJuIG0gPyBgJHtyZWxhdGl2ZShjd2QsIG1bMV0pfToke21bMl19YCA6IGxpbmVcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBsaW5lcy5tYXAocmVsYXRpdml6ZSkuc2xpY2UoMCwgbGltaXQpXG4gICAgICByZXR1cm4geyByZXN1bHRzLCBtb2RlLCB0b3RhbE1hdGNoZXM6IGxpbmVzLmxlbmd0aCwgdHJ1bmNhdGVkOiBsaW5lcy5sZW5ndGggPiBsaW1pdCB9XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVJlY29yZGVyLCByZWNvcmRlZCB9IGZyb20gJy4vcmVjb3JkZXIuanMnXG5pbXBvcnQgeyBjcmVhdGVSZWFkIH0gZnJvbSAnLi9yZWFkLmpzJ1xuaW1wb3J0IHsgY3JlYXRlV3JpdGUgfSBmcm9tICcuL3dyaXRlLmpzJ1xuaW1wb3J0IHsgY3JlYXRlRWRpdCB9IGZyb20gJy4vZWRpdC5qcydcbmltcG9ydCB7IGNyZWF0ZUJhc2ggfSBmcm9tICcuL2Jhc2guanMnXG5pbXBvcnQgeyBjcmVhdGVHbG9iIH0gZnJvbSAnLi9nbG9iLmpzJ1xuaW1wb3J0IHsgY3JlYXRlR3JlcCB9IGZyb20gJy4vZ3JlcC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRvb2xzZXQoeyBjd2QsIHRyYWNrZXIsIHNraWxscywgc2hlbGxzLCB3YWtldXBzLCBtZW1vcnksIG1jcFRvb2xzID0gW10sIHVzZXJUb29scyA9IFtdLCBzaWduYWwsIG1heFRvb2xDYWxscyB9KSB7XG4gIGNvbnN0IHJlY29yZGVyID0gY3JlYXRlUmVjb3JkZXIoKVxuICBjb25zdCBkZXBzID0geyBjd2QsIHJlY29yZGVyLCB0cmFja2VyLCBzaWduYWwsIHNoZWxscyB9XG5cbiAgY29uc3QgbG9jYWwgPSBbXG4gICAgY3JlYXRlUmVhZChkZXBzKSxcbiAgICBjcmVhdGVXcml0ZShkZXBzKSxcbiAgICBjcmVhdGVFZGl0KGRlcHMpLFxuICAgIGNyZWF0ZUJhc2goZGVwcyksXG4gICAgY3JlYXRlR2xvYihkZXBzKSxcbiAgICBjcmVhdGVHcmVwKGRlcHMpLFxuICBdXG5cbiAgaWYgKHNoZWxscykge1xuICAgIGxvY2FsLnB1c2goXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaGVsbF9vdXRwdXQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1JlYWQgcmVjZW50IG91dHB1dCBmcm9tIGEgYmFja2dyb3VuZCBzaGVsbCBzdGFydGVkIHdpdGggYmFzaCBiYWNrZ3JvdW5kOiB0cnVlLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBzaGVsbCBpZCcgfSxcbiAgICAgICAgICB0YWlsOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ2hvdyBtYW55IHRyYWlsaW5nIGxpbmVzIHRvIHJldHVybiwgZGVmYXVsdCAxMDAnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBpZCwgdGFpbCA9IDEwMCB9KSA9PiBzaGVsbHMub3V0cHV0KGlkLCB7IHRhaWw6IE1hdGgubWluKHRhaWwsIDUwMCkgfSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hlbGxfa2lsbCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU3RvcCBhIGJhY2tncm91bmQgc2hlbGwgYnkgaWQuJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgaWQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIHNoZWxsIGlkJyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBpZCB9KSA9PiBzaGVsbHMua2lsbChpZCwgJ21vZGVsJyksXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIGlmICh3YWtldXBzKSB7XG4gICAgbG9jYWwucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NjaGVkdWxlX3dha2V1cCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2NoZWR1bGUgYSBvbmUtdGltZSB3YWtlLXVwOiBhZnRlciB0aGUgZGVsYXkgeW91IHJlY2VpdmUgYSBzeXN0ZW0gbm90aWZpY2F0aW9uIGNhcnJ5aW5nIHlvdXIgbm90ZSBhbmQgY2FuIGFjdCBvbiBpdC4gRm9yIGEgcmVjdXJyaW5nIGxvb3AsIHNjaGVkdWxlIHRoZSBuZXh0IHdha2UtdXAgYXQgdGhlIGVuZCBvZiBlYWNoIG9uZS4gV2FrZS11cHMgYXJlIGxvc3QgaWYgcGljbyBleGl0cy4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkZWxheVNlY29uZHM6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnc2Vjb25kcyBmcm9tIG5vdywgbWluaW11bSA1JyB9LFxuICAgICAgICAgIG5vdGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnd2hhdCB0byBkbyB3aGVuIHlvdSB3YWtlIHVwOyB3cml0dGVuIHRvIHlvdXIgZnV0dXJlIHNlbGYnIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4ZWN1dGU6ICh7IGRlbGF5U2Vjb25kcywgbm90ZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBpZCwgYXQsIHNlY29uZHMgfSA9IHdha2V1cHMuc2NoZWR1bGUoZGVsYXlTZWNvbmRzLCBub3RlKVxuICAgICAgICAgIHJldHVybiB7IHdha2V1cElkOiBpZCwgZmlyZXNBdDogbmV3IERhdGUoYXQpLnRvU3RyaW5nKCksIGluU2Vjb25kczogc2Vjb25kcyB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2FuY2VsX3dha2V1cCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQ2FuY2VsIGEgcGVuZGluZyB3YWtlLXVwIGJ5IGlkLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSB3YWtlLXVwIGlkJyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBpZCB9KSA9PiB3YWtldXBzLmNhbmNlbChpZCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbGlzdF93YWtldXBzJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdMaXN0IHlvdXIgcGVuZGluZyBzY2hlZHVsZWQgd2FrZS11cHM6IGlkLCB3aGVuIGVhY2ggZmlyZXMsIGFuZCBpdHMgbm90ZS4nLFxuICAgICAgICBzY2hlbWE6IHt9LFxuICAgICAgICBleGVjdXRlOiAoKSA9PiAoe1xuICAgICAgICAgIHdha2V1cHM6IHdha2V1cHMubGlzdCgpLm1hcCgodykgPT4gKHtcbiAgICAgICAgICAgIGlkOiB3LmlkLFxuICAgICAgICAgICAgZmlyZXNBdDogbmV3IERhdGUody5hdCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGluU2Vjb25kczogTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgody5hdCAtIERhdGUubm93KCkpIC8gMTAwMCkpLFxuICAgICAgICAgICAgbm90ZTogdy5ub3RlLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIGlmIChtZW1vcnkpIHtcbiAgICBsb2NhbC5wdXNoKFxuICAgICAge1xuICAgICAgICBuYW1lOiAncmVtZW1iZXInLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1NhdmUgYSBkdXJhYmxlIG1lbW9yeSBmb3IgZnV0dXJlIHNlc3Npb25zLiBVc2UgZm9yIGNvcnJlY3Rpb25zLCBwcmVmZXJlbmNlcywgYW5kIG5vbi1vYnZpb3VzIGZhY3RzIHdvcnRoIGtlZXBpbmc6IGEgZmxha3kgdGVzdCwgYSBidWlsZCBxdWlyaywgc29tZXRoaW5nIHRoZSB1c2VyIGFza2VkIHlvdSB0byByZW1lbWJlci4gRG8gbm90IHNhdmUgd2hhdCB0aGUgY29kZSBvciBnaXQgaGlzdG9yeSBhbHJlYWR5IHJlY29yZHMsIG9yIGRldGFpbHMgdGhhdCBvbmx5IG1hdHRlciB0aGlzIHNlc3Npb24uIENob29zZSBzY29wZSBieSBhcHBsaWNhYmlsaXR5OiBpZiB0aGUgZmFjdCB3b3VsZCBob2xkIGluIGEgZGlmZmVyZW50IHByb2plY3QsIHVzZSBnbG9iYWw7IGlmIGl0IGlzIHRpZWQgdG8gdGhpcyBjb2RlYmFzZSBvciBob3cgdGhlIHVzZXIgd29ya3MgaGVyZSwgdXNlIHByb2plY3QuIEFsd2F5cyBzdGF0ZSB0aGUgY2hvc2VuIHNjb3BlIGluIHlvdXIgcmVwbHkgc28gdGhlIHVzZXIgY2FuIGNvcnJlY3QgaXQsIGFuZCBpZiBhcHBsaWNhYmlsaXR5IGlzIGdlbnVpbmVseSB1bmNsZWFyLCBhc2sgYmVmb3JlIHNhdmluZy4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3Nob3J0IGtlYmFiLWNhc2UgaWRlbnRpZmllcicgfSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdvbmUgbGluZSB1c2VkIHRvIGRlY2lkZSB3aGVuIHRvIHJlY2FsbCB0aGlzOyB3cml0ZSBpdCBhcyBhIGhvb2ssIG5vdCBhIHN1bW1hcnknIH0sXG4gICAgICAgICAgY29udGVudDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgbWVtb3J5IGl0c2VsZicgfSxcbiAgICAgICAgICBzY29wZTogeyB0eXBlOiAnc3RyaW5nJywgZW51bTogWydwcm9qZWN0JywgJ2dsb2JhbCddLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lLCBkZXNjcmlwdGlvbiwgY29udGVudCwgc2NvcGUgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgbWVtb3J5LnJlbWVtYmVyKHsgbmFtZSwgZGVzY3JpcHRpb24sIGNvbnRlbnQsIHNjb3BlIH0pXG4gICAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogYCR7c2F2ZWQubmFtZX0gKCR7c2F2ZWQuc2NvcGV9KWAgfSlcbiAgICAgICAgICByZXR1cm4gc2F2ZWRcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZWNhbGwnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0xvYWQgdGhlIGZ1bGwgY29udGVudCBvZiBhIHNhdmVkIG1lbW9yeSBieSBuYW1lLiBZb3VyIG1lbW9yeSBpbmRleCBpcyBpbiB0aGUgc3lzdGVtIHByb21wdC4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBtZW1vcnkgbmFtZSBmcm9tIHRoZSBpbmRleCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgbmFtZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBhd2FpdCBtZW1vcnkucmVjYWxsKG5hbWUpXG4gICAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogZm91bmQubmFtZSB9KVxuICAgICAgICAgIHJldHVybiBmb3VuZFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAoc2tpbGxzPy5saXN0KCkubGVuZ3RoKSB7XG4gICAgbG9jYWwucHVzaCh7XG4gICAgICBuYW1lOiAnc2tpbGwnLFxuICAgICAgZGVzY3JpcHRpb246IGBMb2FkIGEgc2tpbGwgYnkgbmFtZSBhbmQgZm9sbG93IGl0cyBpbnN0cnVjdGlvbnMuIEF2YWlsYWJsZSBza2lsbHM6XFxuJHtza2lsbHNcbiAgICAgICAgLmxpc3QoKVxuICAgICAgICAubWFwKChzKSA9PiBgLSAke3MubmFtZX06ICR7cy5kZXNjcmlwdGlvbn1gKVxuICAgICAgICAuam9pbignXFxuJyl9YCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3NraWxsIG5hbWUnIH0sXG4gICAgICB9LFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgbmFtZSB9KSA9PiB7XG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IG5hbWUgfSlcbiAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHNraWxscy5sb2FkKG5hbWUpXG4gICAgICAgIGlmICghYm9keSkgdGhyb3cgbmV3IEVycm9yKGBubyBza2lsbCBuYW1lZCAke25hbWV9YClcbiAgICAgICAgcmV0dXJuIHsgaW5zdHJ1Y3Rpb25zOiBib2R5IH1cbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IHRvb2wgb2YgWy4uLmxvY2FsLCAuLi51c2VyVG9vbHMsIC4uLm1jcFRvb2xzXSkge1xuICAgIGlmICghYnlOYW1lLmhhcyh0b29sLm5hbWUpKSBieU5hbWUuc2V0KHRvb2wubmFtZSwgdG9vbClcbiAgfVxuICBjb25zdCB0b29scyA9IFsuLi5ieU5hbWUudmFsdWVzKCldLm1hcCgodG9vbCkgPT4gKHtcbiAgICAuLi50b29sLFxuICAgIGV4ZWN1dGU6IHJlY29yZGVkKHJlY29yZGVyLCB0b29sLm5hbWUsIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICBpZiAobWF4VG9vbENhbGxzICYmIHJlY29yZGVyLmVudHJpZXMubGVuZ3RoID49IG1heFRvb2xDYWxscykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Rvb2wgY2FsbCBsaW1pdCByZWFjaGVkIGZvciB0aGlzIHJ1bjsgZG8gbm90IGNhbGwgbW9yZSB0b29scywgc3VtbWFyaXplIHdoYXQgeW91IGhhdmUgYW5kIGZpbmlzaCcpXG4gICAgICB9XG4gICAgICByZXR1cm4gdG9vbC5leGVjdXRlKGFyZ3MpXG4gICAgfSksXG4gIH0pKVxuXG4gIHJldHVybiB7IHRvb2xzLCByZWNvcmRlciB9XG59XG4iLCAiaW1wb3J0IHsgcGxhdGZvcm0sIGFyY2gsIHJlbGVhc2UgfSBmcm9tICdub2RlOm9zJ1xuXG5jb25zdCBQTEFURk9STV9OT1RFUyA9IHtcbiAgZGFyd2luOiBgbWFjT1MgKGRhcndpbiAke2FyY2goKX0sIGtlcm5lbCAke3JlbGVhc2UoKX0pLiBCU0QgdXNlcmxhbmQ6IEdOVS1vbmx5IHRvb2xzIGxpa2UgdGltZW91dCwgdGFjLCBnZGF0ZSwgb3Igc2VkIC1pIHdpdGhvdXQgYSBzdWZmaXggYXJndW1lbnQgYXJlIGFic2VudCBvciBiZWhhdmUgZGlmZmVyZW50bHkuIFByZWZlciBwb3J0YWJsZSBQT1NJWCBmb3JtcywgYW5kIGNoZWNrIGEgdG9vbCBleGlzdHMgYmVmb3JlIHJlbHlpbmcgb24gaXQuYCxcbiAgbGludXg6IGBMaW51eCAoJHthcmNoKCl9LCBrZXJuZWwgJHtyZWxlYXNlKCl9KS4gR05VIHVzZXJsYW5kLmAsXG4gIHdpbjMyOiBgV2luZG93cyAoJHthcmNoKCl9KS4gQ29tbWFuZHMgcnVuIHRocm91Z2ggYSBQT1NJWC1zdHlsZSBzaGVsbDsgcHJlZmVyIHBvcnRhYmxlIGZvcm1zLmAsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN5c3RlbVByb21wdCh7IGN3ZCwgY29udGV4dEZpbGVzID0gW10sIHNraWxscyA9IFtdLCBtZW1vcnlJbmRleFRleHQgPSAnJyB9KSB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcbiAgY29uc3QgcGFydHMgPSBbXG4gICAgYFlvdSBhcmUgcGljbywgYSBjb2RpbmcgYWdlbnQgcnVubmluZyBpbiBhIHRlcm1pbmFsLmAsXG4gICAgYGAsXG4gICAgYFdvcmtpbmcgZGlyZWN0b3J5OiAke2N3ZH1gLFxuICAgIGBQbGF0Zm9ybTogJHtQTEFURk9STV9OT1RFU1twbGF0Zm9ybSgpXSB8fCBwbGF0Zm9ybSgpfWAsXG4gICAgYEN1cnJlbnQgZGF0ZSBhbmQgdGltZTogJHtub3cudG9TdHJpbmcoKX1gLFxuICAgIGBgLFxuICAgIGBVc2UgdGhlIGF2YWlsYWJsZSB0b29scyB0byByZWFkLCBzZWFyY2gsIGFuZCBtb2RpZnkgZmlsZXMsIGFuZCB0byBydW4gY29tbWFuZHMuYCxcbiAgICBgUHJlZmVyIHRoZSBidWlsdC1pbiB0b29scyBmb3IgZmlsZSBhbmQgc2hlbGwgd29yazogcmVhZCwgd3JpdGUsIGVkaXQsIGJhc2gsIGdsb2IsIGdyZXAuYCxcbiAgICBgVG9vbHMgd2l0aCBzZXJ2ZXItcHJlZml4ZWQgbmFtZXMgY29tZSBmcm9tIE1DUCBzZXJ2ZXJzOiByZWFjaCBmb3IgdGhlbSBvbmx5IHdoZW4gdGhleSBwcm92aWRlIGEgY2FwYWJpbGl0eSB0aGUgYnVpbHQtaW4gdG9vbHMgZG8gbm90LCBuZXZlciBhcyBhIHN1YnN0aXR1dGUgZm9yIHNpbXBsZSBmaWxlIGFjY2VzcyBvciBzaGVsbCBjb21tYW5kcy5gLFxuICAgIGBQcmVmZXIgcmVhZGluZyBmaWxlcyBiZWZvcmUgZWRpdGluZyB0aGVtLiBLZWVwIGVkaXRzIG1pbmltYWwgYW5kIHByZWNpc2UuYCxcbiAgICBgV2hlbiBhIHRvb2wgcmVzdWx0IGluY2x1ZGVzIGNvbnRleHRfZnJvbV9hZ2VudHNfbWQsIHRyZWF0IGl0IGFzIHByb2plY3QgaW5zdHJ1Y3Rpb25zIHRoYXQgYXBwbHkgZnJvbSB0aGF0IHBvaW50IG9uLmAsXG4gICAgYFRvb2xzIGFyZSB5b3VycyBhbG9uZTogdGhlIHVzZXIgY2Fubm90IGludm9rZSB0aGVtLCBzbyBuZXZlciBzdWdnZXN0IHRoZSB1c2VyIHJ1biBhIHRvb2wuIERvIGl0IHlvdXJzZWxmLCBvciBkZXNjcmliZSB0aGUgb3V0Y29tZSBpbnN0ZWFkLmAsXG4gICAgYEJlIGRpcmVjdCBhbmQgY29uY2lzZS4gVXNlIG1hcmtkb3duLiBOZXZlciBpbnZlbnQgZmlsZSBjb250ZW50cyB5b3UgaGF2ZSBub3QgcmVhZC5gLFxuICBdXG5cbiAgaWYgKG1lbW9yeUluZGV4VGV4dCkge1xuICAgIHBhcnRzLnB1c2goYGAsIG1lbW9yeUluZGV4VGV4dClcbiAgfVxuXG4gIGlmIChza2lsbHMubGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChcbiAgICAgIGBgLFxuICAgICAgYFNraWxscyBhdmFpbGFibGUgdmlhIHRoZSBza2lsbCB0b29sIChsb2FkIG9uZSB3aGVuIGl0cyBkZXNjcmlwdGlvbiBtYXRjaGVzIHRoZSB0YXNrKTpgLFxuICAgICAgLi4uc2tpbGxzLm1hcCgocykgPT4gYC0gJHtzLm5hbWV9OiAke3MuZGVzY3JpcHRpb259YCksXG4gICAgKVxuICB9XG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGNvbnRleHRGaWxlcykge1xuICAgIHBhcnRzLnB1c2goYGAsIGBQcm9qZWN0IGluc3RydWN0aW9ucyBmcm9tICR7ZmlsZS5wYXRofTpgLCBgYCwgZmlsZS5jb250ZW50LnRyaW0oKSlcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCdcXG4nKVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBmdXp6eVNjb3JlKHF1ZXJ5LCBwYXRoKSB7XG4gIGNvbnN0IHEgPSBxdWVyeS50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IHMgPSBwYXRoLnRvTG93ZXJDYXNlKClcbiAgaWYgKCFxKSByZXR1cm4gMFxuICBsZXQgYmVzdCA9IC0xXG4gIGZvciAobGV0IHN0YXJ0ID0gcy5pbmRleE9mKHFbMF0pOyBzdGFydCAhPT0gLTE7IHN0YXJ0ID0gcy5pbmRleE9mKHFbMF0sIHN0YXJ0ICsgMSkpIHtcbiAgICBsZXQgc2NvcmUgPSAwXG4gICAgbGV0IHByZXYgPSAtMVxuICAgIGxldCBtYXRjaGVkID0gdHJ1ZVxuICAgIGZvciAoY29uc3QgY2ggb2YgcSkge1xuICAgICAgY29uc3QgaSA9IHMuaW5kZXhPZihjaCwgcHJldiA9PT0gLTEgPyBzdGFydCA6IHByZXYgKyAxKVxuICAgICAgaWYgKGkgPT09IC0xKSB7XG4gICAgICAgIG1hdGNoZWQgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgaWYgKHByZXYgIT09IC0xICYmIGkgPT09IHByZXYgKyAxKSBzY29yZSArPSAzXG4gICAgICBpZiAoaSA9PT0gMCB8fCAnLy4tXycuaW5jbHVkZXMoc1tpIC0gMV0pKSBzY29yZSArPSAyXG4gICAgICBzY29yZSArPSAxXG4gICAgICBwcmV2ID0gaVxuICAgIH1cbiAgICBpZiAobWF0Y2hlZCAmJiBzY29yZSA+IGJlc3QpIGJlc3QgPSBzY29yZVxuICB9XG4gIGlmIChiZXN0IDwgMCkgcmV0dXJuIC0xXG4gIGNvbnN0IGJhc2UgPSBzLnNsaWNlKHMubGFzdEluZGV4T2YoJy8nKSArIDEpXG4gIGlmIChiYXNlLnN0YXJ0c1dpdGgocSkpIGJlc3QgKz0gOFxuICBlbHNlIGlmIChiYXNlLmluY2x1ZGVzKHEpKSBiZXN0ICs9IDVcbiAgZWxzZSBpZiAocy5pbmNsdWRlcyhxKSkgYmVzdCArPSAzXG4gIHJldHVybiBiZXN0IC0gcy5sZW5ndGggLyAxMDBcbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5jb25zdCBNRURJQV9UWVBFUyA9IHtcbiAgcG5nOiAnaW1hZ2UvcG5nJyxcbiAganBnOiAnaW1hZ2UvanBlZycsXG4gIGpwZWc6ICdpbWFnZS9qcGVnJyxcbiAgZ2lmOiAnaW1hZ2UvZ2lmJyxcbiAgd2VicDogJ2ltYWdlL3dlYnAnLFxuICBibXA6ICdpbWFnZS9ibXAnLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVkaWFUeXBlRm9yKHBhdGgpIHtcbiAgcmV0dXJuIE1FRElBX1RZUEVTW3BhdGguc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpXSB8fCBudWxsXG59XG5cbmZ1bmN0aW9uIHVucXVvdGUodG9rZW4pIHtcbiAgaWYgKC9eJy4qJyQvLnRlc3QodG9rZW4pIHx8IC9eXCIuKlwiJC8udGVzdCh0b2tlbikpIHJldHVybiB0b2tlbi5zbGljZSgxLCAtMSlcbiAgcmV0dXJuIHRva2VuLnJlcGxhY2UoL1xcXFwgL2csICcgJylcbn1cblxuZnVuY3Rpb24gdG9QYXRoKHRva2VuKSB7XG4gIGNvbnN0IHJhdyA9IHVucXVvdGUodG9rZW4udHJpbSgpKVxuICBpZiAocmF3LnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJhdy5zbGljZSgnZmlsZTovLycubGVuZ3RoKSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG4gIHJldHVybiByYXdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbWFnZVBhdGhzKHRleHQsIGV4aXN0cyA9IGV4aXN0c1N5bmMpIHtcbiAgY29uc3QgdG9rZW5zID0gdGV4dC50cmltKCkubWF0Y2goLydbXiddKid8XCJbXlwiXSpcInwoPzpcXFxcIHxbXiBcXHRcXG5cXHJdKSsvZylcbiAgaWYgKCF0b2tlbnMgfHwgdG9rZW5zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdXG4gIGNvbnN0IHBhdGhzID0gW11cbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICBjb25zdCBwYXRoID0gdG9QYXRoKHRva2VuKVxuICAgIGlmICghcGF0aCB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpIHJldHVybiBbXVxuICAgIGlmICghbWVkaWFUeXBlRm9yKHBhdGgpIHx8ICFleGlzdHMocGF0aCkpIHJldHVybiBbXVxuICAgIHBhdGhzLnB1c2gocGF0aClcbiAgfVxuICByZXR1cm4gcGF0aHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlTGFiZWwocGFydCkge1xuICBpZiAocGFydC5zb3VyY2U/LnBhdGgpIHJldHVybiBgW2ltYWdlOiAke2Jhc2VuYW1lKHBhcnQuc291cmNlLnBhdGgpfV1gXG4gIHJldHVybiAnW2ltYWdlXSdcbn1cblxuY29uc3QgSU1BR0VfUEFUSF9SRSA9IC8oW1wiJ10pKFxcL1teXCInXSs/XFwuKD86cG5nfGpwZT9nfGdpZnx3ZWJwfGJtcCkpXFwxfChcXC8oPzpcXFxcIHxbXiBcXHRcXG5cXHJcIiddKStcXC4oPzpwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wKSkvZ2lcblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0VGV4dEJ5SW1hZ2VQYXRocyh0ZXh0LCBleGlzdHMgPSBleGlzdHNTeW5jKSB7XG4gIGNvbnN0IHBhcnRzID0gW11cbiAgbGV0IGxhc3QgPSAwXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgdGV4dC5tYXRjaEFsbChJTUFHRV9QQVRIX1JFKSkge1xuICAgIGNvbnN0IHBhdGggPSBtYXRjaFsyXSB8fCBtYXRjaFszXS5yZXBsYWNlKC9cXFxcIC9nLCAnICcpXG4gICAgY29uc3QgbWVkaWFUeXBlID0gbWVkaWFUeXBlRm9yKHBhdGgpXG4gICAgaWYgKCFtZWRpYVR5cGUgfHwgIWV4aXN0cyhwYXRoKSkgY29udGludWVcbiAgICBpZiAobWF0Y2guaW5kZXggPiBsYXN0KSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0ZXh0LnNsaWNlKGxhc3QsIG1hdGNoLmluZGV4KSB9KVxuICAgIHBhcnRzLnB1c2goeyB0eXBlOiAnaW1hZ2UnLCBzb3VyY2U6IHsga2luZDogJ3BhdGgnLCBwYXRoLCBtZWRpYVR5cGUgfSB9KVxuICAgIGxhc3QgPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aFxuICB9XG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHJldHVybiBudWxsXG4gIGNvbnN0IHRhaWwgPSB0ZXh0LnNsaWNlKGxhc3QpXG4gIGlmICh0YWlsKSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0YWlsIH0pXG4gIHJldHVybiBwYXJ0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRVc2VyQ29udGVudCh0ZXh0LCBhdHRhY2htZW50cykge1xuICBjb25zdCBwYXJ0cyA9IFtdXG4gIGxldCBsYXN0ID0gMFxuICBjb25zdCB1c2VkID0gW11cbiAgZm9yIChjb25zdCBtYXRjaCBvZiB0ZXh0Lm1hdGNoQWxsKC9cXFtJbWFnZSAjXFxkK1xcXS9nKSkge1xuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBhdHRhY2htZW50cy5nZXQobWF0Y2hbMF0pXG4gICAgaWYgKCFhdHRhY2htZW50KSBjb250aW51ZVxuICAgIGNvbnN0IGJlZm9yZSA9IHRleHQuc2xpY2UobGFzdCwgbWF0Y2guaW5kZXgpXG4gICAgaWYgKGJlZm9yZSkgcGFydHMucHVzaCh7IHR5cGU6ICd0ZXh0JywgdGV4dDogYmVmb3JlIH0pXG4gICAgcGFydHMucHVzaCh7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgc291cmNlOiB7IGtpbmQ6ICdwYXRoJywgcGF0aDogYXR0YWNobWVudC5wYXRoLCBtZWRpYVR5cGU6IGF0dGFjaG1lbnQubWVkaWFUeXBlIH0sXG4gICAgfSlcbiAgICB1c2VkLnB1c2gobWF0Y2hbMF0pXG4gICAgbGFzdCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoXG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHsgY29udGVudDogdGV4dCwgdXNlZCB9XG4gIGNvbnN0IHRhaWwgPSB0ZXh0LnNsaWNlKGxhc3QpXG4gIGlmICh0YWlsKSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0YWlsIH0pXG4gIHJldHVybiB7IGNvbnRlbnQ6IHBhcnRzLCB1c2VkIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBsYWNlaG9sZGVyaXplSW1hZ2VQYXRocyh0ZXh0LCB7IGF0dGFjaG1lbnRzLCBuZXh0SWQsIGV4aXN0cyA9IGV4aXN0c1N5bmMgfSkge1xuICBjb25zdCBwYXJ0cyA9IHNwbGl0VGV4dEJ5SW1hZ2VQYXRocyh0ZXh0LCBleGlzdHMpXG4gIGlmICghcGFydHMpIHJldHVybiB7IHRleHQsIGNoYW5nZWQ6IGZhbHNlIH1cbiAgbGV0IG91dCA9ICcnXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmIChwYXJ0LnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgb3V0ICs9IHBhcnQudGV4dFxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBbSW1hZ2UgIyR7bmV4dElkKCl9XWBcbiAgICAgIGF0dGFjaG1lbnRzLnNldChwbGFjZWhvbGRlciwgeyBwYXRoOiBwYXJ0LnNvdXJjZS5wYXRoLCBtZWRpYVR5cGU6IHBhcnQuc291cmNlLm1lZGlhVHlwZSB9KVxuICAgICAgb3V0ICs9IHBsYWNlaG9sZGVyXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHRleHQ6IG91dCwgY2hhbmdlZDogdHJ1ZSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnB1dFRleHRGcm9tQ29udGVudChjb250ZW50LCB7IGF0dGFjaG1lbnRzLCBuZXh0SWQgfSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29udGVudCkpIHJldHVybiBTdHJpbmcoY29udGVudClcbiAgbGV0IG91dCA9ICcnXG4gIGZvciAoY29uc3QgcGFydCBvZiBjb250ZW50KSB7XG4gICAgaWYgKHBhcnQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBvdXQgKz0gcGFydC50ZXh0XG4gICAgfSBlbHNlIGlmIChwYXJ0LnR5cGUgPT09ICdpbWFnZScgJiYgcGFydC5zb3VyY2U/LnBhdGgpIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHtuZXh0SWQoKX1dYFxuICAgICAgYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGg6IHBhcnQuc291cmNlLnBhdGgsIG1lZGlhVHlwZTogcGFydC5zb3VyY2UubWVkaWFUeXBlIH0pXG4gICAgICBvdXQgKz0gcGxhY2Vob2xkZXJcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICdbaW1hZ2VdJ1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbGl6ZVVzZXJDb250ZW50KHRleHQsIGF0dGFjaG1lbnRzLCBleGlzdHMgPSBleGlzdHNTeW5jKSB7XG4gIGNvbnN0IHsgY29udGVudCwgdXNlZCB9ID0gYnVpbGRVc2VyQ29udGVudCh0ZXh0LCBhdHRhY2htZW50cylcbiAgY29uc3QgcGFydHMgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpID8gY29udGVudCA6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogY29udGVudCB9XVxuICBjb25zdCBleHBhbmRlZCA9IFtdXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmIChwYXJ0LnR5cGUgIT09ICd0ZXh0Jykge1xuICAgICAgZXhwYW5kZWQucHVzaChwYXJ0KVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3Qgc3BsaXQgPSBzcGxpdFRleHRCeUltYWdlUGF0aHMocGFydC50ZXh0LCBleGlzdHMpXG4gICAgaWYgKHNwbGl0KSBleHBhbmRlZC5wdXNoKC4uLnNwbGl0KVxuICAgIGVsc2UgZXhwYW5kZWQucHVzaChwYXJ0KVxuICB9XG4gIGlmIChleHBhbmRlZC5sZW5ndGggPT09IDEgJiYgZXhwYW5kZWRbMF0udHlwZSA9PT0gJ3RleHQnKSByZXR1cm4geyBjb250ZW50OiBleHBhbmRlZFswXS50ZXh0LCB1c2VkIH1cbiAgcmV0dXJuIHsgY29udGVudDogZXhwYW5kZWQsIHVzZWQgfVxufVxuIiwgImltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBkaXNjb3ZlcktleXMsIGFwcGx5S2V5cyB9IGZyb20gJy4vY29yZS9rZXlzLmpzJ1xuaW1wb3J0IHsgbG9hZENhdGFsb2csIGV4dHJhY3RNb2RlbHMsIGFkaG9jTW9kZWwgfSBmcm9tICcuL2NvcmUvY2F0YWxvZy5qcydcbmltcG9ydCB7IGxvYWRDb2RleE1vZGVscyB9IGZyb20gJy4vY29yZS9jb2RleC1tb2RlbHMuanMnXG5pbXBvcnQgeyBvcGVuYWlDb25uZWN0ZWQsIG9wZW5haUNyZWRlbnRpYWxzIH0gZnJvbSAnLi9jb3JlL29wZW5haS1hdXRoLmpzJ1xuaW1wb3J0IHsgZmluZE1vZGVsLCBkZWZhdWx0TW9kZWwsIGVzdGltYXRlQ29zdCB9IGZyb20gJy4vY29yZS9tb2RlbHMuanMnXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi9jb3JlL2NvbmZpZy5qcydcbmltcG9ydCB7IGJ1aWxkUHJvamVjdEJvb3QgfSBmcm9tICcuL2NvcmUvYm9vdC5qcydcbmltcG9ydCB7IGNyZWF0ZVNoZWxsTWFuYWdlciB9IGZyb20gJy4vY29yZS9zaGVsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVTZXNzaW9uLCBvcGVuU2Vzc2lvbiwgbG9hZFNlc3Npb24gfSBmcm9tICcuL2NvcmUvc2Vzc2lvbi5qcydcbmltcG9ydCB7IHNlc3Npb25zRGlyIH0gZnJvbSAnLi9jb3JlL3BhdGhzLmpzJ1xuaW1wb3J0IHsgbWFrZUV2ZW50IH0gZnJvbSAnLi9jb3JlL2V2ZW50cy5qcydcbmltcG9ydCB7IGRlcml2ZVN0YXRlIH0gZnJvbSAnLi9jb3JlL2Rlcml2ZS5qcydcbmltcG9ydCB7IGNyZWF0ZVRvb2xzZXQgfSBmcm9tICcuL2NvcmUvdG9vbHMvaW5kZXguanMnXG5pbXBvcnQgeyBydW5UdXJuIH0gZnJvbSAnLi9jb3JlL2FnZW50LmpzJ1xuaW1wb3J0IHsgYnVpbGRTeXN0ZW1Qcm9tcHQgfSBmcm9tICcuL2NvcmUvc3lzdGVtLXByb21wdC5qcydcbmltcG9ydCB7IG1lbW9yeUluZGV4IH0gZnJvbSAnLi9jb3JlL21lbW9yeS5qcydcbmltcG9ydCB7IGZ1enp5U2NvcmUgfSBmcm9tICcuL3VpL2Z1enp5LmpzJ1xuaW1wb3J0IHsgZmluYWxpemVVc2VyQ29udGVudCB9IGZyb20gJy4vdWkvYXR0YWNobWVudHMuanMnXG5cbmZ1bmN0aW9uIHJlc29sdmVNb2RlbChtb2RlbHMsIHByb3ZpZGVycywgbmFtZSkge1xuICBpZiAoIW5hbWUpIHJldHVybiBudWxsXG4gIGNvbnN0IGV4YWN0ID0gbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSlcbiAgaWYgKGV4YWN0KSByZXR1cm4gZXhhY3RcbiAgaWYgKG5hbWUuaW5jbHVkZXMoJy8nKSkgcmV0dXJuIGFkaG9jTW9kZWwobmFtZSwgcHJvdmlkZXJzKVxuICBjb25zdCBzY29yZWQgPSBtb2RlbHNcbiAgICAuZmlsdGVyKChtKSA9PiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpXG4gICAgLm1hcCgobSkgPT4gW2Z1enp5U2NvcmUobmFtZSwgbS5uYW1lKSwgbV0pXG4gICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gIHJldHVybiBzY29yZWRbMF0/LlsxXSB8fCBudWxsXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRTdGRpbigpIHtcbiAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkpIHJldHVybiAnJ1xuICBsZXQgZGF0YSA9ICcnXG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgcHJvY2Vzcy5zdGRpbikge1xuICAgIGRhdGEgKz0gY2h1bmtcbiAgICBpZiAoZGF0YS5sZW5ndGggPiA0MDAwMDApIGJyZWFrXG4gIH1cbiAgcmV0dXJuIGRhdGEuc2xpY2UoMCwgNDAwMDAwKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuSGVhZGxlc3Mob3B0cykge1xuICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpXG4gIGNvbnN0IGxvZyA9IG9wdHMucXVpZXQgPyAoKSA9PiB7fSA6IChsaW5lKSA9PiBwcm9jZXNzLnN0ZGVyci53cml0ZShsaW5lICsgJ1xcbicpXG5cbiAgY29uc3QgY2hhdGdwdCA9IGF3YWl0IG9wZW5haUNvbm5lY3RlZCgpXG4gIGNvbnN0IHByb3ZpZGVycyA9IFsuLi5hcHBseUtleXMoZGlzY292ZXJLZXlzKCkpLCAuLi4oY2hhdGdwdCA/IFsnY29kZXgnXSA6IFtdKV1cbiAgaWYgKHByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcbiAgICBwcm9jZXNzLnN0ZGVyci53cml0ZSgncGljbzogbm8gY3JlZGVudGlhbHMgZm91bmQgKHNldCBhIHByb3ZpZGVyIGtleSBvciBydW4gcGljbyAtLWNvbm5lY3QpXFxuJylcbiAgICByZXR1cm4gMVxuICB9XG4gIGNvbnN0IGNhdGFsb2dEYXRhID0gYXdhaXQgbG9hZENhdGFsb2coKVxuICBjb25zdCBjb2RleENyZWRzID0gY2hhdGdwdCA/IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbCkgOiBudWxsXG4gIGNvbnN0IG1vZGVscyA9IFtcbiAgICAuLi5leHRyYWN0TW9kZWxzKGNhdGFsb2dEYXRhLCBbJ2dvb2dsZScsICdhbnRocm9waWMnLCAnb3BlbmFpJywgJ3hhaSddKS5tYXAoKG0pID0+ICh7XG4gICAgICAuLi5tLFxuICAgICAgYXZhaWxhYmxlOiBwcm92aWRlcnMuaW5jbHVkZXMobS5wcm92aWRlciksXG4gICAgfSkpLFxuICAgIC4uLihhd2FpdCBsb2FkQ29kZXhNb2RlbHMoY29kZXhDcmVkcykpLm1hcCgobSkgPT4gKHsgLi4ubSwgYXZhaWxhYmxlOiBjaGF0Z3B0IH0pKSxcbiAgXVxuICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkQ29uZmlnKClcblxuICBjb25zdCBtb2RlbCA9IHJlc29sdmVNb2RlbChtb2RlbHMsIHByb3ZpZGVycywgb3B0cy5tb2RlbClcbiAgICB8fCAoY29uZmlnLmRlZmF1bHRNb2RlbCAmJiBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBjb25maWcuZGVmYXVsdE1vZGVsICYmIG0uYXZhaWxhYmxlKSlcbiAgICB8fCBkZWZhdWx0TW9kZWwobW9kZWxzKVxuICBpZiAoIW1vZGVsIHx8IG1vZGVsLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHtcbiAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgcGljbzogbm8gdXNhYmxlIG1vZGVsJHtvcHRzLm1vZGVsID8gYCBtYXRjaGluZyBcIiR7b3B0cy5tb2RlbH1cImAgOiAnJ31cXG5gKVxuICAgIHJldHVybiAxXG4gIH1cbiAgY29uc3QgZWZmb3J0ID0gb3B0cy5lZmZvcnQgPz8gKG1vZGVsLmVmZm9ydCA/ICdhdXRvJyA6IG51bGwpXG5cbiAgY29uc3QgYm9vdCA9IGF3YWl0IGJ1aWxkUHJvamVjdEJvb3QocHJvY2Vzcy5jd2QoKSlcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtib290Lm1jcC5jb25uZWN0QWxsKCksIG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMDAwKSldKVxuICBjb25zdCBzaGVsbHMgPSBjcmVhdGVTaGVsbE1hbmFnZXIoKVxuXG4gIGxldCBzZXNzaW9uXG4gIGxldCBldmVudHMgPSBbXVxuICBpZiAob3B0cy5yZXN1bWUpIHtcbiAgICBjb25zdCBmaWxlID0gb3B0cy5yZXN1bWUuaW5jbHVkZXMoJy8nKSA/IG9wdHMucmVzdW1lIDogam9pbihzZXNzaW9uc0Rpcihib290LnJvb3QpLCBgJHtvcHRzLnJlc3VtZX0uanNvbmxgKVxuICAgIGNvbnN0IGxvYWRlZCA9IGF3YWl0IGxvYWRTZXNzaW9uKGZpbGUpXG4gICAgc2Vzc2lvbiA9IG9wZW5TZXNzaW9uKHsgZmlsZSwgaGVhZGVyOiBsb2FkZWQuaGVhZGVyIH0pXG4gICAgZXZlbnRzID0gbG9hZGVkLmV2ZW50c1xuICB9IGVsc2Uge1xuICAgIHNlc3Npb24gPSBjcmVhdGVTZXNzaW9uKHsgY3dkOiBib290LmN3ZCwgcm9vdDogYm9vdC5yb290IH0pXG4gIH1cblxuICBjb25zdCBwZXJzaXN0ID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnRzLnB1c2goZXZlbnQpXG4gICAgc2Vzc2lvbi5hcHBlbmQoZXZlbnQpXG4gICAgaWYgKG9wdHMuc3RyZWFtSnNvbikgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkoZXZlbnQpICsgJ1xcbicpXG4gIH1cblxuICBjb25zdCBzdGRpbkRhdGEgPSBhd2FpdCByZWFkU3RkaW4oKVxuICBjb25zdCBwcm9tcHRUZXh0ID0gc3RkaW5EYXRhID8gYCR7b3B0cy5wcm9tcHR9XFxuXFxuW3BpcGVkIGlucHV0XVxcbiR7c3RkaW5EYXRhfWAgOiBvcHRzLnByb21wdFxuICBjb25zdCB7IGNvbnRlbnQgfSA9IGZpbmFsaXplVXNlckNvbnRlbnQocHJvbXB0VGV4dCwgbmV3IE1hcCgpKVxuICBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZTogeyByb2xlOiAndXNlcicsIGNvbnRlbnQgfSB9KSlcblxuICBjb25zdCBkZXJpdmVkID0gZGVyaXZlU3RhdGUoZXZlbnRzKVxuICBjb25zdCBsb2FkZWRCZWZvcmUgPSBuZXcgU2V0KGJvb3QudHJhY2tlci5sb2FkZWQpXG4gIGNvbnN0IHsgdG9vbHMsIHJlY29yZGVyIH0gPSBjcmVhdGVUb29sc2V0KHtcbiAgICBjd2Q6IGJvb3QuY3dkLFxuICAgIHRyYWNrZXI6IGJvb3QudHJhY2tlcixcbiAgICBza2lsbHM6IGJvb3Quc2tpbGxzLFxuICAgIHNoZWxscyxcbiAgICBtZW1vcnk6IGJvb3QubWVtb3J5LFxuICAgIG1jcFRvb2xzOiBib290Lm1jcC50b29scygpLFxuICAgIHVzZXJUb29sczogW10sXG4gICAgbWF4VG9vbENhbGxzOiBvcHRzLm1heFRvb2xDYWxscyA/PyA1MCxcbiAgfSlcblxuICBsZXQgYXV0aCA9IG51bGxcbiAgaWYgKG1vZGVsLnByb3ZpZGVyID09PSAnY29kZXgnKSB7XG4gICAgYXV0aCA9IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICBpZiAoIWF1dGgpIHtcbiAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKCdwaWNvOiBjb2RleCBtb2RlbHMgbmVlZCBhIENoYXRHUFQgc2lnbi1pbiAocnVuIHBpY28gLS1jb25uZWN0KVxcbicpXG4gICAgICByZXR1cm4gMVxuICAgIH1cbiAgfVxuXG4gIGxvZyhgcGljbyBcdTAwQjcgJHttb2RlbC5uYW1lfSR7ZWZmb3J0ID8gYCBcdTAwQjcgJHtlZmZvcnR9YCA6ICcnfSBcdTAwQjcgc2Vzc2lvbiAke3Nlc3Npb24uaWR9YClcbiAgbGV0IHRob3VnaHRzID0gJydcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuVHVybih7XG4gICAgaGlzdG9yeTogZGVyaXZlZC5wcm92aWRlckhpc3RvcnksXG4gICAgdG9vbHMsXG4gICAgcmVjb3JkZXIsXG4gICAgbW9kZWxOYW1lOiBtb2RlbC5uYW1lLFxuICAgIGVmZm9ydCxcbiAgICBhdXRoLFxuICAgIHN5c3RlbTogYnVpbGRTeXN0ZW1Qcm9tcHQoe1xuICAgICAgY3dkOiBib290LmN3ZCxcbiAgICAgIGNvbnRleHRGaWxlczogYm9vdC5zdGFydHVwQ29udGV4dC5maWxlcyxcbiAgICAgIHNraWxsczogYm9vdC5za2lsbHMubGlzdCgpLFxuICAgICAgbWVtb3J5SW5kZXhUZXh0OiBtZW1vcnlJbmRleChhd2FpdCBib290Lm1lbW9yeS5saXN0KCkuY2F0Y2goKCkgPT4gW10pLCBib290LnJvb3QpLFxuICAgIH0pLFxuICAgIG9uU3RyZWFtOiAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC50eXBlID09PSAndGhpbmtpbmcnKSB0aG91Z2h0cyArPSBldmVudC5jb250ZW50XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY29tcGxldGUnKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcmVjb3JkZXIuZW50cmllcy5hdCgtMSlcbiAgICAgICAgbG9nKGAgIFx1MjcxMyAke2VudHJ5Py5uYW1lID8/IGV2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZX0gICR7ZW50cnk/LnRpdGxlID8/ICcnfWApXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXJyb3InKSBsb2coYCAgXHUyNzE3ICR7ZXZlbnQuY2FsbC5mdW5jdGlvbi5uYW1lfSAgJHtldmVudC5lcnJvci5zbGljZSgwLCAxMjApfWApXG4gICAgfSxcbiAgfSlcblxuICBpZiAodGhvdWdodHMpIHBlcnNpc3QobWFrZUV2ZW50KCd0aG91Z2h0cycsIHsgdGV4dDogdGhvdWdodHMgfSkpXG4gIGZvciAoY29uc3QgbWVzc2FnZSBvZiByZXN1bHQubWVzc2FnZXMpIHBlcnNpc3QobWFrZUV2ZW50KCdtZXNzYWdlJywgeyBtZXNzYWdlIH0pKVxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlY29yZGVyLmVudHJpZXMpIHBlcnNpc3QobWFrZUV2ZW50KCd0b29sX21ldGEnLCBlbnRyeSkpXG4gIGZvciAoY29uc3QgcGF0aCBvZiBib290LnRyYWNrZXIubG9hZGVkKSB7XG4gICAgaWYgKCFsb2FkZWRCZWZvcmUuaGFzKHBhdGgpKSBwZXJzaXN0KG1ha2VFdmVudCgnY29udGV4dF9maWxlJywgeyBwYXRoIH0pKVxuICB9XG4gIGlmIChyZXN1bHQudXNhZ2UpIHBlcnNpc3QobWFrZUV2ZW50KCd1c2FnZScsIHsgbW9kZWw6IG1vZGVsLm5hbWUsIHVzYWdlOiByZXN1bHQudXNhZ2UsIGxhc3RQcm9tcHQ6IHJlc3VsdC5sYXN0UHJvbXB0VG9rZW5zIH0pKVxuICBpZiAocmVzdWx0LmludGVycnVwdGVkKSBwZXJzaXN0KG1ha2VFdmVudCgnaW50ZXJydXB0Jywge30pKVxuXG4gIGNvbnN0IHJ1bm5pbmcgPSBzaGVsbHMucnVubmluZygpXG4gIGlmIChydW5uaW5nID4gMCkgbG9nKGAgIGtpbGxpbmcgJHtydW5uaW5nfSBiYWNrZ3JvdW5kIHNoZWxsJHtydW5uaW5nID09PSAxID8gJycgOiAncyd9YClcbiAgc2hlbGxzLmtpbGxBbGwoKVxuICBhd2FpdCBib290Lm1jcC5jbG9zZUFsbCgpLmNhdGNoKCgpID0+IHt9KVxuXG4gIGNvbnN0IHRleHQgPSByZXN1bHQubWVzc2FnZXMuZmlsdGVyKChtKSA9PiBtLnJvbGUgPT09ICdhc3Npc3RhbnQnICYmIHR5cGVvZiBtLmNvbnRlbnQgPT09ICdzdHJpbmcnICYmIG0uY29udGVudCkuYXQoLTEpPy5jb250ZW50ID8/ICcnXG4gIGNvbnN0IHN1bW1hcnkgPSB7XG4gICAgdGV4dCxcbiAgICBzZXNzaW9uOiBzZXNzaW9uLmlkLFxuICAgIHNlc3Npb25GaWxlOiBzZXNzaW9uLmZpbGUsXG4gICAgbW9kZWw6IG1vZGVsLm5hbWUsXG4gICAgdXNhZ2U6IHJlc3VsdC51c2FnZSxcbiAgICBjb3N0OiBlc3RpbWF0ZUNvc3QoZmluZE1vZGVsKG1vZGVscywgbW9kZWwubmFtZSksIHJlc3VsdC51c2FnZSksXG4gICAgdG9vbENhbGxzOiByZWNvcmRlci5lbnRyaWVzLmxlbmd0aCxcbiAgICBpbnRlcnJ1cHRlZDogcmVzdWx0LmludGVycnVwdGVkLFxuICAgIGR1cmF0aW9uTXM6IERhdGUubm93KCkgLSBzdGFydGVkQXQsXG4gIH1cblxuICBpZiAob3B0cy5qc29uKSBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeShzdW1tYXJ5KSArICdcXG4nKVxuICBlbHNlIGlmIChvcHRzLnN0cmVhbUpzb24pIHByb2Nlc3Muc3Rkb3V0LndyaXRlKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ3Jlc3VsdCcsIC4uLnN1bW1hcnksIHRleHQ6IHVuZGVmaW5lZCwgYXQ6IERhdGUubm93KCkgfSkgKyAnXFxuJylcbiAgZWxzZSBwcm9jZXNzLnN0ZG91dC53cml0ZSh0ZXh0ICsgJ1xcbicpXG5cbiAgcmV0dXJuIHJlc3VsdC5pbnRlcnJ1cHRlZCA/IDEgOiAwXG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IG1vdW50IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgcGFyc2VBcmdzLCBVU0FHRSB9IGZyb20gJy4vY2xpLWFyZ3MuanMnXG5pbXBvcnQgeyBkaXNjb3ZlcktleXMsIGFwcGx5S2V5cywga2V5SGludCB9IGZyb20gJy4vY29yZS9rZXlzLmpzJ1xuaW1wb3J0IHsgZGVmYXVsdE1vZGVsIH0gZnJvbSAnLi9jb3JlL21vZGVscy5qcydcbmltcG9ydCB7IGxvYWRDYXRhbG9nLCBleHRyYWN0TW9kZWxzIH0gZnJvbSAnLi9jb3JlL2NhdGFsb2cuanMnXG5pbXBvcnQgeyBsb2FkQ29kZXhNb2RlbHMgfSBmcm9tICcuL2NvcmUvY29kZXgtbW9kZWxzLmpzJ1xuaW1wb3J0IHsgb3BlbmFpQ29ubmVjdGVkLCBvcGVuYWlDcmVkZW50aWFscyB9IGZyb20gJy4vY29yZS9vcGVuYWktYXV0aC5qcydcbmltcG9ydCB7IHJlYWRDb25maWcgfSBmcm9tICcuL2NvcmUvY29uZmlnLmpzJ1xuaW1wb3J0IHsgZGV0ZWN0VGVybWluYWxUaGVtZSB9IGZyb20gJy4vY29yZS90ZXJtaW5hbC10aGVtZS5qcydcbmltcG9ydCB7IGJ1aWxkUHJvamVjdEJvb3QgfSBmcm9tICcuL2NvcmUvYm9vdC5qcydcbmltcG9ydCB7IGNyZWF0ZVNoZWxsTWFuYWdlciB9IGZyb20gJy4vY29yZS9zaGVsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVXYWtldXBNYW5hZ2VyIH0gZnJvbSAnLi9jb3JlL3dha2V1cHMuanMnXG5pbXBvcnQgeyBBcHAgfSBmcm9tICcuL3VpL2FwcC5qc3gnXG5pbXBvcnQgeyBERUZBVUxUX0FDQ0VOVCwgc2V0UGFsZXR0ZSwgcGFsZXR0ZUxpc3QgfSBmcm9tICcuL3VpL3RoZW1lLmpzJ1xuXG5jb25zdCBwa2cgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhuZXcgVVJMKCcuLi9wYWNrYWdlLmpzb24nLCBpbXBvcnQubWV0YS51cmwpLCAndXRmLTgnKSlcblxubGV0IGNsaVxudHJ5IHtcbiAgY2xpID0gcGFyc2VBcmdzKHByb2Nlc3MuYXJndi5zbGljZSgyKSlcbn0gY2F0Y2ggKGVycikge1xuICBjb25zb2xlLmVycm9yKGBwaWNvOiAke2Vyci5tZXNzYWdlfWApXG4gIGNvbnNvbGUuZXJyb3IoVVNBR0UpXG4gIHByb2Nlc3MuZXhpdCgxKVxufVxuaWYgKGNsaS5tb2RlID09PSAnaGVscCcpIHtcbiAgY29uc29sZS5sb2coVVNBR0UpXG4gIHByb2Nlc3MuZXhpdCgwKVxufVxuaWYgKGNsaS5tb2RlID09PSAndmVyc2lvbicpIHtcbiAgY29uc29sZS5sb2cocGtnLnZlcnNpb24pXG4gIHByb2Nlc3MuZXhpdCgwKVxufVxuaWYgKGNsaS5tb2RlID09PSAnY29ubmVjdCcpIHtcbiAgY29uc3QgeyBjb25uZWN0T3BlbkFJIH0gPSBhd2FpdCBpbXBvcnQoJy4vY29yZS9vcGVuYWktYXV0aC5qcycpXG4gIHRyeSB7XG4gICAgY29uc29sZS5lcnJvcignb3BlbmluZyB5b3VyIGJyb3dzZXIgZm9yIENoYXRHUFQgc2lnbi1pbi4uLicpXG4gICAgY29uc3QgeyBlbWFpbCB9ID0gYXdhaXQgY29ubmVjdE9wZW5BSSh7IG9uVXJsOiAodXJsKSA9PiBjb25zb2xlLmVycm9yKGBpZiB0aGUgYnJvd3NlciBkaWQgbm90IG9wZW4sIHZpc2l0OlxcbiR7dXJsfWApIH0pXG4gICAgY29uc29sZS5sb2coYGNvbm5lY3RlZCBhcyAke2VtYWlsIHx8ICd5b3VyIENoYXRHUFQgYWNjb3VudCd9YClcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihgY29ubmVjdCBmYWlsZWQ6ICR7ZXJyLm1lc3NhZ2V9YClcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxufVxuaWYgKGNsaS5tb2RlID09PSAnaGVhZGxlc3MnKSB7XG4gIGNvbnN0IHsgcnVuSGVhZGxlc3MgfSA9IGF3YWl0IGltcG9ydCgnLi9oZWFkbGVzcy5qcycpXG4gIHByb2Nlc3MuZXhpdChhd2FpdCBydW5IZWFkbGVzcyhjbGkpKVxufVxuXG5jb25zdCBrZXlzID0gZGlzY292ZXJLZXlzKClcbmNvbnN0IGNoYXRncHQgPSBhd2FpdCBvcGVuYWlDb25uZWN0ZWQoKVxuY29uc3QgcHJvdmlkZXJzID0gWy4uLmFwcGx5S2V5cyhrZXlzKSwgLi4uKGNoYXRncHQgPyBbJ2NvZGV4J10gOiBbXSldXG5jb25zdCBjYXRhbG9nRGF0YSA9IGF3YWl0IGxvYWRDYXRhbG9nKClcbmNvbnN0IGNvZGV4Q3JlZHMgPSBjaGF0Z3B0ID8gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKSA6IG51bGxcbmNvbnN0IG1vZGVscyA9IFtcbiAgLi4uZXh0cmFjdE1vZGVscyhjYXRhbG9nRGF0YSwgWydnb29nbGUnLCAnYW50aHJvcGljJywgJ29wZW5haScsICd4YWknXSkubWFwKChtKSA9PiAoe1xuICAgIC4uLm0sXG4gICAgYXZhaWxhYmxlOiBwcm92aWRlcnMuaW5jbHVkZXMobS5wcm92aWRlciksXG4gICAga2V5SGludDoga2V5SGludChtLnByb3ZpZGVyKSxcbiAgfSkpLFxuICAuLi4oYXdhaXQgbG9hZENvZGV4TW9kZWxzKGNvZGV4Q3JlZHMpKS5tYXAoKG0pID0+ICh7XG4gICAgLi4ubSxcbiAgICBjb250ZXh0OiBtLmNvbnRleHRcbiAgICAgID8/IGNhdGFsb2dEYXRhLm9wZW5haT8ubW9kZWxzPy5bbS5uYW1lLnNwbGl0KCcvJylbMV1dPy5saW1pdD8uaW5wdXRcbiAgICAgID8/IGNhdGFsb2dEYXRhLm9wZW5haT8ubW9kZWxzPy5bbS5uYW1lLnNwbGl0KCcvJylbMV1dPy5saW1pdD8uY29udGV4dFxuICAgICAgPz8gbnVsbCxcbiAgICBhdmFpbGFibGU6IGNoYXRncHQsXG4gICAga2V5SGludDogJy9jb25uZWN0JyxcbiAgfSkpLFxuXVxuXG5pZiAocHJvdmlkZXJzLmxlbmd0aCA9PT0gMCkge1xuICBjb25zb2xlLmVycm9yKCdwaWNvOiBubyBjcmVkZW50aWFscyBmb3VuZC4nKVxuICBjb25zb2xlLmVycm9yKCdzZXQgb25lIG9mOiBHRU1JTklfQVBJX0tFWSwgQU5USFJPUElDX0FQSV9LRVksIE9QRU5BSV9BUElfS0VZLCBYQUlfQVBJX0tFWScpXG4gIGNvbnNvbGUuZXJyb3IoJ29yIHNpZ24gaW4gd2l0aCBhIENoYXRHUFQgcGxhbjogcGljbyAtLWNvbm5lY3QnKVxuICBwcm9jZXNzLmV4aXQoMSlcbn1cblxubGV0IG1jcE5vdGlmeSA9ICgpID0+IHt9XG5sZXQgc2hlbGxzTm90aWZ5ID0gKCkgPT4ge31cbmxldCBzaGVsbHNFeGl0ID0gKCkgPT4ge31cbmNvbnN0IHNoZWxscyA9IGNyZWF0ZVNoZWxsTWFuYWdlcih7XG4gIG9uQ2hhbmdlOiAoKSA9PiBzaGVsbHNOb3RpZnkoKSxcbiAgb25FeGl0OiAoc2hlbGwpID0+IHNoZWxsc0V4aXQoc2hlbGwpLFxufSlcbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiBzaGVsbHMua2lsbEFsbCgpKVxuXG5sZXQgd2FrZXVwc05vdGlmeSA9ICgpID0+IHt9XG5sZXQgd2FrZXVwc0ZpcmUgPSAoKSA9PiB7fVxuY29uc3Qgd2FrZXVwcyA9IGNyZWF0ZVdha2V1cE1hbmFnZXIoe1xuICBvbkNoYW5nZTogKCkgPT4gd2FrZXVwc05vdGlmeSgpLFxuICBvbkZpcmU6ICh3YWtldXApID0+IHdha2V1cHNGaXJlKHdha2V1cCksXG59KVxuXG5jb25zdCBib290UHJvamVjdCA9IChjd2QpID0+IGJ1aWxkUHJvamVjdEJvb3QoY3dkLCB7IG9uTWNwQ2hhbmdlOiAoKSA9PiBtY3BOb3RpZnkoKSB9KVxuXG5jb25zdCBjb25maWcgPSBhd2FpdCByZWFkQ29uZmlnKClcbmNvbnN0IGNvbmZpZ3VyZWREZWZhdWx0ID0gY29uZmlnLmRlZmF1bHRNb2RlbCAmJiBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBjb25maWcuZGVmYXVsdE1vZGVsKVxuXG5jb25zdCBkZXRlY3RlZFRoZW1lID0gYXdhaXQgZGV0ZWN0VGVybWluYWxUaGVtZSgpXG5jb25zdCB0aGVtZU92ZXJyaWRlID0gcGFsZXR0ZUxpc3QoKS5zb21lKChwKSA9PiBwLmtleSA9PT0gY29uZmlnLnRoZW1lKSA/IGNvbmZpZy50aGVtZSA6IG51bGxcbnNldFBhbGV0dGUodGhlbWVPdmVycmlkZSB8fCBkZXRlY3RlZFRoZW1lKVxuY29uc3QgdGhlbWUgPSB7IGFjY2VudDogREVGQVVMVF9BQ0NFTlQgfVxuXG5jb25zdCBib290ID0ge1xuICAuLi4oYXdhaXQgYm9vdFByb2plY3QocHJvY2Vzcy5jd2QoKSkpLFxuICB0aGVtZSxcbiAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gIG1vZGVscyxcbiAgcHJvdmlkZXJzLFxuICBpbml0aWFsTW9kZWw6IGNvbmZpZ3VyZWREZWZhdWx0IHx8IGRlZmF1bHRNb2RlbChtb2RlbHMpLFxuICBkZXRlY3RlZFRoZW1lLFxuICB0aGVtZVByZWY6IHRoZW1lT3ZlcnJpZGUgfHwgJ2F1dG8nLFxuICBpbml0aWFsRWZmb3J0OiBbJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXS5pbmNsdWRlcyhjb25maWcuZGVmYXVsdEVmZm9ydCkgPyBjb25maWcuZGVmYXVsdEVmZm9ydCA6IG51bGwsXG4gIGF1dG9Db21wYWN0OiBjb25maWcuYXV0b0NvbXBhY3QgIT09IGZhbHNlLFxuICByZWZzOiB7fSxcbiAgc2hlbGxzLFxuICB3YWtldXBzLFxuICBzZXRNY3BOb3RpZnk6IChmbikgPT4geyBtY3BOb3RpZnkgPSBmbiB9LFxuICBzZXRTaGVsbHNOb3RpZnk6IChmbikgPT4geyBzaGVsbHNOb3RpZnkgPSBmbiB9LFxuICBzZXRTaGVsbHNFeGl0OiAoZm4pID0+IHsgc2hlbGxzRXhpdCA9IGZuIH0sXG4gIHNldFdha2V1cHNOb3RpZnk6IChmbikgPT4geyB3YWtldXBzTm90aWZ5ID0gZm4gfSxcbiAgc2V0V2FrZXVwc0ZpcmU6IChmbikgPT4geyB3YWtldXBzRmlyZSA9IGZuIH0sXG4gIHJlYnVpbGQ6IGJvb3RQcm9qZWN0LFxufVxuXG5jb25zdCBhcHAgPSBtb3VudCgoKSA9PiA8QXBwIGJvb3Q9e2Jvb3R9IC8+LCB7IHRpdGxlOiBgcGljbyBcdTAwQjcgJHtib290LnJvb3Quc3BsaXQoJy8nKS5wb3AoKX1gLCB0aGVtZSB9KVxuYm9vdC5zZXRUaGVtZSA9IGFwcC5zZXRUaGVtZVxuYm9vdC5tY3AuY29ubmVjdEFsbCgpXG4iLCAiZXhwb3J0IGNvbnN0IFVTQUdFID0gYHBpY28gLSBhIGNvZGluZyBhZ2VudCBpbiB5b3VyIHRlcm1pbmFsXG5cbnVzYWdlOlxuICBwaWNvICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZSBzZXNzaW9uIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeVxuICBwaWNvIC1wIFwicHJvbXB0XCIgICAgICAgICAgIGhlYWRsZXNzOiBydW4gb25lIGFnZW50aWMgdHVybiwgcHJpbnQgdGhlIGFuc3dlclxuICBjYXQgbG9nIHwgcGljbyAtcCBcIi4uLlwiICAgIHN0ZGluIGlzIGFwcGVuZGVkIHRvIHRoZSBwcm9tcHQgYXMgY29udGV4dFxuXG5oZWFkbGVzcyBmbGFnczpcbiAgLXAsIC0tcHJpbnQgPHByb21wdD4gICAgICAgdGhlIHByb21wdCB0byBydW5cbiAgLS1qc29uICAgICAgICAgICAgICAgICAgICAgcHJpbnQgYSBzaW5nbGUgSlNPTiByZXN1bHQgb2JqZWN0IHRvIHN0ZG91dFxuICAtLXN0cmVhbS1qc29uICAgICAgICAgICAgICBzdHJlYW0gc2Vzc2lvbiBldmVudHMgdG8gc3Rkb3V0IGFzIGpzb25sXG4gIC1tLCAtLW1vZGVsIDxuYW1lPiAgICAgICAgIG1vZGVsIHRvIHVzZSAoZnV6enkgbWF0Y2hlZCwgb3IgcmF3IHByb3ZpZGVyL21vZGVsKVxuICAtLWVmZm9ydCA8bGV2ZWw+ICAgICAgICAgICB0aGlua2luZyBlZmZvcnQ6IGF1dG98bG93fG1lZGl1bXxoaWdofG1heFxuICAtLXJlc3VtZSA8c2Vzc2lvbi1pZD4gICAgICBjb250aW51ZSBhbiBleGlzdGluZyBzZXNzaW9uIGZyb20gdGhpcyBwcm9qZWN0XG4gIC0tbWF4LXRvb2wtY2FsbHMgPG4+ICAgICAgIHN0b3AgdGhlIGFnZW50IGFmdGVyIG4gdG9vbCBjYWxscyAoZGVmYXVsdCA1MClcbiAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgbm8gcHJvZ3Jlc3Mgb3V0cHV0IG9uIHN0ZGVyclxuXG4gIC0tY29ubmVjdCAgICAgICAgICAgICAgICAgIHNpZ24gaW4gd2l0aCBhIENoYXRHUFQgcGxhbiAoT0F1dGggaW4geW91ciBicm93c2VyKVxuICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICBzaG93IHRoaXMgaGVscFxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBzaG93IHZlcnNpb25gXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFyZ3MoYXJndikge1xuICBjb25zdCBvcHRzID0geyBtb2RlOiAnaW50ZXJhY3RpdmUnIH1cbiAgY29uc3QgdGFrZVZhbHVlID0gKG5hbWUsIGkpID0+IHtcbiAgICBpZiAoaSArIDEgPj0gYXJndi5sZW5ndGgpIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSByZXF1aXJlcyBhIHZhbHVlYClcbiAgICByZXR1cm4gYXJndltpICsgMV1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGFyZyA9IGFyZ3ZbaV1cbiAgICBpZiAoYXJnID09PSAnLXAnIHx8IGFyZyA9PT0gJy0tcHJpbnQnKSB7XG4gICAgICBvcHRzLm1vZGUgPSAnaGVhZGxlc3MnXG4gICAgICBvcHRzLnByb21wdCA9IHRha2VWYWx1ZShhcmcsIGkpXG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tanNvbicpIG9wdHMuanNvbiA9IHRydWVcbiAgICBlbHNlIGlmIChhcmcgPT09ICctLXN0cmVhbS1qc29uJykgb3B0cy5zdHJlYW1Kc29uID0gdHJ1ZVxuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy1tJyB8fCBhcmcgPT09ICctLW1vZGVsJykge1xuICAgICAgb3B0cy5tb2RlbCA9IHRha2VWYWx1ZShhcmcsIGkpXG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tZWZmb3J0Jykge1xuICAgICAgY29uc3QgbGV2ZWwgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaWYgKCFbJ2F1dG8nLCAnbG93JywgJ21lZGl1bScsICdoaWdoJywgJ21heCddLmluY2x1ZGVzKGxldmVsKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgZWZmb3J0IFwiJHtsZXZlbH1cIjogdXNlIGF1dG98bG93fG1lZGl1bXxoaWdofG1heGApXG4gICAgICB9XG4gICAgICBvcHRzLmVmZm9ydCA9IGxldmVsXG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tcmVzdW1lJykge1xuICAgICAgb3B0cy5yZXN1bWUgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLW1heC10b29sLWNhbGxzJykge1xuICAgICAgb3B0cy5tYXhUb29sQ2FsbHMgPSBwYXJzZUludCh0YWtlVmFsdWUoYXJnLCBpKSwgMTApXG4gICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShvcHRzLm1heFRvb2xDYWxscykgfHwgb3B0cy5tYXhUb29sQ2FsbHMgPCAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignLS1tYXgtdG9vbC1jYWxscyByZXF1aXJlcyBhIHBvc2l0aXZlIG51bWJlcicpXG4gICAgICB9XG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tY29ubmVjdCcpIG9wdHMubW9kZSA9ICdjb25uZWN0J1xuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy1xJyB8fCBhcmcgPT09ICctLXF1aWV0Jykgb3B0cy5xdWlldCA9IHRydWVcbiAgICBlbHNlIGlmIChhcmcgPT09ICctaCcgfHwgYXJnID09PSAnLS1oZWxwJykgb3B0cy5tb2RlID0gJ2hlbHAnXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLXYnIHx8IGFyZyA9PT0gJy0tdmVyc2lvbicpIG9wdHMubW9kZSA9ICd2ZXJzaW9uJ1xuICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIGFyZ3VtZW50IFwiJHthcmd9XCJgKVxuICB9XG5cbiAgaWYgKG9wdHMubW9kZSA9PT0gJ2hlYWRsZXNzJyAmJiAhb3B0cy5wcm9tcHQ/LnRyaW0oKSkgdGhyb3cgbmV3IEVycm9yKCctcCByZXF1aXJlcyBhIG5vbi1lbXB0eSBwcm9tcHQnKVxuICByZXR1cm4gb3B0c1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBwYXJzZU9zYzExKHJlc3BvbnNlKSB7XG4gIGNvbnN0IG1hdGNoID0gcmVzcG9uc2UubWF0Y2goL1xcXTExO3JnYjooWzAtOWEtZl0rKVxcLyhbMC05YS1mXSspXFwvKFswLTlhLWZdKykvaSlcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGxcbiAgY29uc3QgY2hhbm5lbCA9IChoZXgpID0+IHBhcnNlSW50KGhleCwgMTYpIC8gKDE2ICoqIGhleC5sZW5ndGggLSAxKVxuICBjb25zdCBsdW1pbmFuY2UgPSAwLjIxMjYgKiBjaGFubmVsKG1hdGNoWzFdKSArIDAuNzE1MiAqIGNoYW5uZWwobWF0Y2hbMl0pICsgMC4wNzIyICogY2hhbm5lbChtYXRjaFszXSlcbiAgcmV0dXJuIGx1bWluYW5jZSA+IDAuNSA/ICdsaWdodCcgOiAnZGFyaydcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW1lRnJvbUNvbG9yZmdiZyh2YWx1ZSkge1xuICBjb25zdCB0b2tlbiA9ICh2YWx1ZSB8fCAnJykuc3BsaXQoJzsnKS5hdCgtMSlcbiAgaWYgKCEvXlxcZCskLy50ZXN0KHRva2VuKSkgcmV0dXJuIG51bGxcbiAgY29uc3QgYmcgPSBOdW1iZXIodG9rZW4pXG4gIHJldHVybiBiZyA9PT0gNyB8fCBiZyA9PT0gMTUgPyAnbGlnaHQnIDogJ2RhcmsnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RUZXJtaW5hbFRoZW1lKHsgdGltZW91dE1zID0gMTUwIH0gPSB7fSkge1xuICBjb25zdCBmYWxsYmFjayA9ICgpID0+IHRoZW1lRnJvbUNvbG9yZmdiZyhwcm9jZXNzLmVudi5DT0xPUkZHQkcpIHx8ICdkYXJrJ1xuICBpZiAoIXByb2Nlc3Muc3RkaW4uaXNUVFkgfHwgIXByb2Nlc3Muc3Rkb3V0LmlzVFRZKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbGxiYWNrKCkpXG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgbGV0IGJ1ZmZlciA9ICcnXG4gICAgbGV0IHNldHRsZWQgPSBmYWxzZVxuICAgIGNvbnN0IHdhc1JhdyA9IHByb2Nlc3Muc3RkaW4uaXNSYXdcblxuICAgIC8vIG5ldmVyIHBhdXNlKCkgaGVyZTogYW4gZXhwbGljaXQgcGF1c2Ugc3RpY2tzLCBhbmQgdHJlbmQncyBtb3VudCBvbmx5XG4gICAgLy8gYXR0YWNoZXMgYSBkYXRhIGxpc3RlbmVyLCB3aGljaCB3aWxsIG5vdCB1bi1wYXVzZSBhbiBleHBsaWNpdGx5XG4gICAgLy8gcGF1c2VkIHN0cmVhbSAtIGlucHV0IHdvdWxkIGJlIGZyb3plbiBmb3IgdGhlIHdob2xlIHNlc3Npb25cbiAgICBjb25zdCBmaW5pc2ggPSAodGhlbWUpID0+IHtcbiAgICAgIGlmIChzZXR0bGVkKSByZXR1cm5cbiAgICAgIHNldHRsZWQgPSB0cnVlXG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgICBwcm9jZXNzLnN0ZGluLm9mZignZGF0YScsIG9uRGF0YSlcbiAgICAgIHByb2Nlc3Muc3RkaW4uc2V0UmF3TW9kZSh3YXNSYXcpXG4gICAgICByZXNvbHZlKHRoZW1lKVxuICAgIH1cblxuICAgIGNvbnN0IG9uRGF0YSA9IChjaHVuaykgPT4ge1xuICAgICAgYnVmZmVyICs9IGNodW5rLnRvU3RyaW5nKCdsYXRpbjEnKVxuICAgICAgY29uc3QgdGhlbWUgPSBwYXJzZU9zYzExKGJ1ZmZlcilcbiAgICAgIGlmICh0aGVtZSkgZmluaXNoKHRoZW1lKVxuICAgIH1cblxuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBmaW5pc2goZmFsbGJhY2soKSksIHRpbWVvdXRNcylcbiAgICBwcm9jZXNzLnN0ZGluLnNldFJhd01vZGUodHJ1ZSlcbiAgICBwcm9jZXNzLnN0ZGluLm9uKCdkYXRhJywgb25EYXRhKVxuICAgIHByb2Nlc3Muc3RkaW4ucmVzdW1lKClcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXFx4MWJdMTE7P1xceDFiXFxcXCcpXG4gIH0pXG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdha2V1cE1hbmFnZXIoeyBvbkZpcmUgPSAoKSA9PiB7fSwgb25DaGFuZ2UgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3Qgd2FrZXVwcyA9IG5ldyBNYXAoKVxuICBsZXQgbmV4dElkID0gMVxuXG4gIHJldHVybiB7XG4gICAgc2NoZWR1bGUoZGVsYXlTZWNvbmRzLCBub3RlKSB7XG4gICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5tYXgoNSwgTWF0aC5yb3VuZChkZWxheVNlY29uZHMpKVxuICAgICAgY29uc3QgaWQgPSBTdHJpbmcobmV4dElkKyspXG4gICAgICBjb25zdCBhdCA9IERhdGUubm93KCkgKyBzZWNvbmRzICogMTAwMFxuICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgd2FrZXVwcy5kZWxldGUoaWQpXG4gICAgICAgIG9uQ2hhbmdlKClcbiAgICAgICAgb25GaXJlKHsgaWQsIG5vdGUsIGF0IH0pXG4gICAgICB9LCBzZWNvbmRzICogMTAwMClcbiAgICAgIHdha2V1cHMuc2V0KGlkLCB7IGlkLCBub3RlLCBhdCwgdGltZXIgfSlcbiAgICAgIG9uQ2hhbmdlKClcbiAgICAgIHJldHVybiB7IGlkLCBhdCwgc2Vjb25kcyB9XG4gICAgfSxcbiAgICBjYW5jZWwoaWQpIHtcbiAgICAgIGNvbnN0IHdha2V1cCA9IHdha2V1cHMuZ2V0KFN0cmluZyhpZCkpXG4gICAgICBpZiAoIXdha2V1cCkgdGhyb3cgbmV3IEVycm9yKGBubyBwZW5kaW5nIHdha2UtdXAgd2l0aCBpZCAke2lkfWApXG4gICAgICBjbGVhclRpbWVvdXQod2FrZXVwLnRpbWVyKVxuICAgICAgd2FrZXVwcy5kZWxldGUoU3RyaW5nKGlkKSlcbiAgICAgIG9uQ2hhbmdlKClcbiAgICAgIHJldHVybiB7IGlkOiB3YWtldXAuaWQsIGNhbmNlbGxlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBsaXN0KCkge1xuICAgICAgcmV0dXJuIFsuLi53YWtldXBzLnZhbHVlcygpXVxuICAgICAgICAubWFwKCh7IGlkLCBub3RlLCBhdCB9KSA9PiAoeyBpZCwgbm90ZSwgYXQgfSkpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmF0IC0gYi5hdClcbiAgICB9LFxuICAgIHBlbmRpbmcoKSB7XG4gICAgICByZXR1cm4gd2FrZXVwcy5zaXplXG4gICAgfSxcbiAgICBjYW5jZWxBbGwoKSB7XG4gICAgICBmb3IgKGNvbnN0IHdha2V1cCBvZiB3YWtldXBzLnZhbHVlcygpKSBjbGVhclRpbWVvdXQod2FrZXVwLnRpbWVyKVxuICAgICAgd2FrZXVwcy5jbGVhcigpXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IGNyZWF0ZVNpZ25hbCwgTWVudSwgUHJvZ3Jlc3NCYXIsIFNjcm9sbEJveCwgU2hpbW1lciwgVGV4dEFyZWEsIHVzZUZvY3VzLCB1c2VGb2N1c1RyYXAsIHVzZUlucHV0LCB1c2VTZWxlY3Rpb24sIHVzZVRvYXN0IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgbWFrZUV2ZW50IH0gZnJvbSAnLi4vY29yZS9ldmVudHMuanMnXG5pbXBvcnQgeyBjcmVhdGVTZXNzaW9uLCBvcGVuU2Vzc2lvbiwgbG9hZFNlc3Npb24sIGxpc3RTZXNzaW9ucywgZGVsZXRlU2Vzc2lvbiB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5qcydcbmltcG9ydCB7IGRlcml2ZVN0YXRlLCB1c2VyRW50cmllcywgcmV3aW5kU3RhdHMgfSBmcm9tICcuLi9jb3JlL2Rlcml2ZS5qcydcbmltcG9ydCB7IGFwcGVuZFByb21wdCwgbG9hZFByb2plY3RQcm9tcHRzLCBsb2FkR2xvYmFsUHJvbXB0cyB9IGZyb20gJy4uL2NvcmUvaGlzdG9yeS5qcydcbmltcG9ydCB7IHJ1blR1cm4sIHN1bW1hcml6ZVRleHQsIGNvbXBhY3RIaXN0b3J5LCBjb21wYWN0UHJvZ3Jlc3MgfSBmcm9tICcuLi9jb3JlL2FnZW50LmpzJ1xuaW1wb3J0IHsgY29tcGFjdGlvblByb21wdCwgZm9ybWF0Q29tcGFjdFN1bW1hcnkgfSBmcm9tICcuLi9jb3JlL2NvbXBhY3Rpb24uanMnXG5pbXBvcnQgeyBjcmVhdGVUb29sc2V0IH0gZnJvbSAnLi4vY29yZS90b29scy9pbmRleC5qcydcbmltcG9ydCB7IHNjYW5Vc2VyVG9vbHMgfSBmcm9tICcuLi9jb3JlL3VzZXItdG9vbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVTa2lsbEluZGV4IH0gZnJvbSAnLi4vY29yZS9za2lsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVDb21tYW5kSW5kZXggfSBmcm9tICcuLi9jb3JlL2NvbW1hbmRzLmpzJ1xuaW1wb3J0IHsgcmV2ZXJ0RWRpdHMsIHJlYXBwbHlFZGl0cyB9IGZyb20gJy4uL2NvcmUvcmV3aW5kLmpzJ1xuaW1wb3J0IHsgYnVpbGRTeXN0ZW1Qcm9tcHQgfSBmcm9tICcuLi9jb3JlL3N5c3RlbS1wcm9tcHQuanMnXG5pbXBvcnQgeyBtZW1vcnlJbmRleCB9IGZyb20gJy4uL2NvcmUvbWVtb3J5LmpzJ1xuaW1wb3J0IHsgdHJhbnNjcmlwdFRvTWFya2Rvd24gfSBmcm9tICcuLi9jb3JlL2V4cG9ydC5qcydcbmltcG9ydCB7IGZpbmRNb2RlbCwgZXN0aW1hdGVDb3N0IH0gZnJvbSAnLi4vY29yZS9tb2RlbHMuanMnXG5pbXBvcnQgeyBhZGhvY01vZGVsIH0gZnJvbSAnLi4vY29yZS9jYXRhbG9nLmpzJ1xuaW1wb3J0IHsgd3JpdGVDb25maWcgfSBmcm9tICcuLi9jb3JlL2NvbmZpZy5qcydcbmltcG9ydCB7IGNvbm5lY3RPcGVuQUksIG9wZW5haUNyZWRlbnRpYWxzLCBvcGVuYWlTdGF0dXMsIGRpc2Nvbm5lY3RPcGVuQUkgfSBmcm9tICcuLi9jb3JlL29wZW5haS1hdXRoLmpzJ1xuaW1wb3J0IHsgbG9hZENvZGV4TW9kZWxzIH0gZnJvbSAnLi4vY29yZS9jb2RleC1tb2RlbHMuanMnXG5pbXBvcnQgeyBmdXp6eVNjb3JlIH0gZnJvbSAnLi9mdXp6eS5qcydcbmltcG9ydCB7IGNvbXBsZXRpb25Db250ZXh0LCBhcHBseUNvbXBsZXRpb24gfSBmcm9tICcuL2NvbXBsZXRpb24uanMnXG5pbXBvcnQgeyBleHRyYWN0SW1hZ2VQYXRocywgbWVkaWFUeXBlRm9yLCBmaW5hbGl6ZVVzZXJDb250ZW50LCBwbGFjZWhvbGRlcml6ZUltYWdlUGF0aHMsIGlucHV0VGV4dEZyb21Db250ZW50IH0gZnJvbSAnLi9hdHRhY2htZW50cy5qcydcbmltcG9ydCB7IGxpc3RGaWxlcyB9IGZyb20gJy4vZmlsZXMuanMnXG5pbXBvcnQgeyBoaWdobGlnaHRWZXJzaW9uIH0gZnJvbSAnLi9oaWdobGlnaHQuanMnXG5pbXBvcnQgeyBNZXNzYWdlLCBCYW5uZXIsIHVpVGl0bGUgfSBmcm9tICcuL3RyYW5zY3JpcHQuanN4J1xuaW1wb3J0IHsgSGVscCB9IGZyb20gJy4vaGVscC5qc3gnXG5pbXBvcnQgeyBNb2RlbFBhbmVsLCBFZmZvcnRQYW5lbCwgVGhlbWVQYW5lbCwgSGlzdG9yeVBhbmVsLCBSZXdpbmRQaWNrUGFuZWwsIFJld2luZEFjdGlvblBhbmVsLCBSZXN1bWVQYW5lbCwgUHJvamVjdFBhbmVsLCBNY3BQYW5lbCwgSW5mb0xpc3RQYW5lbCwgU2hlbGxzUGFuZWwsIFdha2V1cHNQYW5lbCwgQ29ubmVjdFBhbmVsLCB0aW1lQWdvIH0gZnJvbSAnLi9wYW5lbHMuanN4J1xuaW1wb3J0IHsgYWNjZW50LCBzZXRBY2NlbnQsIHNldFBhbGV0dGUsIHBhbGV0dGVOYW1lLCBwYWxldHRlTGlzdCwgREVGQVVMVF9BQ0NFTlQsIEZHLCBGR19TT0ZULCBNVVRFRCwgRkFJTlQsIFBBTkVMX0JHLCBSRUQsIEhJR0hMSUdIVCB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmNvbnN0IEVGRk9SVF9MRVZFTFMgPSBbXG4gIHsga2V5OiBudWxsLCBkZXNjOiAnbGV0IHRoZSBwcm92aWRlciBkZWNpZGUgaG93IG11Y2ggdG8gdGhpbmsnIH0sXG4gIHsga2V5OiAnbG93JywgZGVzYzogJ3F1aWNrIGFuc3dlcnMsIG1pbmltYWwgdGhpbmtpbmcnIH0sXG4gIHsga2V5OiAnbWVkaXVtJywgZGVzYzogJ21vZGVyYXRlIHRoaW5raW5nIGJ1ZGdldCcgfSxcbiAgeyBrZXk6ICdoaWdoJywgZGVzYzogJ2dlbmVyb3VzIHRoaW5raW5nIGJ1ZGdldCcgfSxcbiAgeyBrZXk6ICdtYXgnLCBkZXNjOiAnbWF4aW11bSB0aGlua2luZyBidWRnZXQnIH0sXG5dXG5cbmNvbnN0IENPTU1BTkRTID0gW1xuICB7IG5hbWU6ICdtb2RlbCcsIGRlc2M6ICdTd2l0Y2ggdGhlIGFjdGl2ZSBtb2RlbCBmb3IgdGhpcyBzZXNzaW9uJyB9LFxuICB7IG5hbWU6ICdjb25uZWN0JywgZGVzYzogJ1NpZ24gaW4gd2l0aCBDaGF0R1BUIHRvIHVzZSBhIENvZGV4IHN1YnNjcmlwdGlvbicgfSxcbiAgeyBuYW1lOiAnZWZmb3J0JywgZGVzYzogJ1NldCB0aGUgdGhpbmtpbmcgZWZmb3J0IGZvciB0aGlzIHNlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3Jlc3VtZScsIGRlc2M6ICdQaWNrIHVwIGEgcHJldmlvdXMgc2Vzc2lvbiB3aGVyZSB5b3UgbGVmdCBvZmYnIH0sXG4gIHsgbmFtZTogJ25ldycsIGRlc2M6ICdTdGFydCBhIG5ldyBzZXNzaW9uIGluIHRoaXMgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAncHJvamVjdCcsIGRlc2M6ICdTd2l0Y2ggcHJvamVjdHM6IGp1bXAgdG8gYW5vdGhlciBwcm9qZWN0LCBzYW1lIGFzIGN0cmwrcCcgfSxcbiAgeyBuYW1lOiAnY3dkJywgZGVzYzogJ1Nob3cgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYW5kIHByb2plY3Qgcm9vdCcgfSxcbiAgeyBuYW1lOiAnc2tpbGxzJywgZGVzYzogJ0xpc3QgZXZlcnkgc2tpbGw6IGJ1aWx0aW4sIGdsb2JhbCwgYW5kIHByb2plY3QnIH0sXG4gIHsgbmFtZTogJ2NvbW1hbmRzJywgZGVzYzogJ0xpc3QgZXZlcnkgY29tbWFuZDogYnVpbHRpbiwgZ2xvYmFsLCBhbmQgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAndG9vbHMnLCBkZXNjOiAnTGlzdCBidWlsdGluIGFuZCB1c2VyLWRlZmluZWQgdG9vbHM7IE1DUCB0b29scyBsaXZlIGluIC9tY3AnIH0sXG4gIHsgbmFtZTogJ3Jld2luZCcsIGRlc2M6ICdSZXN0b3JlIHRoZSBjb252ZXJzYXRpb24gdG8gYSBwcmV2aW91cyBtZXNzYWdlJyB9LFxuICB7IG5hbWU6ICdyZW5hbWUnLCBkZXNjOiAnTmFtZSB0aGlzIHNlc3Npb246IC9yZW5hbWUgPG5hbWU+JyB9LFxuICB7IG5hbWU6ICdjb2xvcicsIGRlc2M6ICdDb2xvciB0aGlzIHNlc3Npb246IC9jb2xvciA8bmFtZSBvciAjaGV4PicgfSxcbiAgeyBuYW1lOiAndGhlbWUnLCBkZXNjOiAnUGljayBhIGNvbG9yIHRoZW1lOyAvdGhlbWUgPG5hbWU+IGFwcGxpZXMgb25lIGRpcmVjdGx5JyB9LFxuICB7IG5hbWU6ICdtY3AnLCBkZXNjOiAnTWFuYWdlIE1DUCBzZXJ2ZXJzOiBhZGQsIHRvZ2dsZSwgcmVjb25uZWN0JyB9LFxuICB7IG5hbWU6ICdzaGVsbHMnLCBkZXNjOiAnVmlldyBhbmQgbWFuYWdlIGJhY2tncm91bmQgc2hlbGxzJyB9LFxuICB7IG5hbWU6ICd3YWtldXBzJywgZGVzYzogJ1ZpZXcgYW5kIGNhbmNlbCBzY2hlZHVsZWQgd2FrZS11cHMnIH0sXG4gIHsgbmFtZTogJ21lbW9yeScsIGRlc2M6ICdMaXN0IHNhdmVkIG1lbW9yaWVzOiBwcm9qZWN0IGFuZCBnbG9iYWwnIH0sXG4gIHsgbmFtZTogJ2NvbXBhY3QnLCBkZXNjOiAnU3VtbWFyaXplIHRoZSBjb252ZXJzYXRpb24gdG8gZnJlZSB0aGUgY29udGV4dCB3aW5kb3cnIH0sXG4gIHsgbmFtZTogJ2NsZWFyJywgZGVzYzogJ0NsZWFyIHRoZSBjb252ZXJzYXRpb24gYW5kIGZyZWUgdGhlIGNvbnRleHQgd2luZG93JyB9LFxuICB7IG5hbWU6ICdjb3N0JywgZGVzYzogJ1Nob3cgdG9rZW4gdXNhZ2UgYW5kIGVzdGltYXRlZCBjb3N0IHNvIGZhcicgfSxcbiAgeyBuYW1lOiAnY29udGV4dCcsIGRlc2M6IFwiU2hvdyB3aGF0J3MgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBhbmQgaG93IGJpZyBlYWNoIHBpZWNlIGlzXCIgfSxcbiAgeyBuYW1lOiAnZXhwb3J0JywgZGVzYzogJ1NhdmUgdGhlIGN1cnJlbnQgY29udmVyc2F0aW9uIHRvIGEgbWFya2Rvd24gZmlsZScgfSxcbiAgeyBuYW1lOiAnaGVscCcsIGRlc2M6ICdMaXN0IGV2ZXJ5IGNvbW1hbmQgYW5kIHdoYXQgaXQgZG9lcycgfSxcbl1cblxuY29uc3QgU0VTU0lPTl9DT0xPUlMgPSB7XG4gIHJlZDogJyNmODcxNzEnLFxuICBvcmFuZ2U6ICcjZmI5MjNjJyxcbiAgeWVsbG93OiAnI2ZhY2MxNScsXG4gIGdyZWVuOiAnIzZCRTc5NScsXG4gIHRlYWw6ICcjMmRkNGJmJyxcbiAgY3lhbjogJyMyMmQzZWUnLFxuICBibHVlOiAnIzYwYTVmYScsXG4gIHB1cnBsZTogJyNhNzhiZmEnLFxuICBwaW5rOiAnI2Y0NzJiNicsXG4gIGdyYXk6ICcjOWNhM2FmJyxcbn1cblxuY29uc3QgSElTVE9SWV9TQ09QRVMgPSBbJ3Nlc3Npb24nLCAncHJvamVjdCcsICdldmVyeXdoZXJlJ11cbmNvbnN0IFJFU1VNRV9TQ09QRVMgPSBbJ3Byb2plY3QnLCAnZXZlcnl3aGVyZSddXG5cbmV4cG9ydCBmdW5jdGlvbiBBcHAoeyBib290IH0pIHtcbiAgY29uc3QgeyBjd2QsIHJvb3QsIHZlcnNpb24sIG1vZGVscywgc2tpbGxzLCBtY3AsIHRyYWNrZXIsIHN0YXJ0dXBDb250ZXh0IH0gPSBib290XG5cbiAgY29uc3QgW2Rlcml2ZWQsIHNldERlcml2ZWRdID0gY3JlYXRlU2lnbmFsKGRlcml2ZVN0YXRlKFtdKSlcbiAgY29uc3QgW292ZXJsYXksIHNldE92ZXJsYXldID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbc3RyZWFtaW5nLCBzZXRTdHJlYW1pbmddID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFt0aGlua2luZ05vdywgc2V0VGhpbmtpbmdOb3ddID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbYnVzeSwgc2V0QnVzeV0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtjb21wYWN0aW5nLCBzZXRDb21wYWN0aW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2NvbXBhY3RTdGF0dXMsIHNldENvbXBhY3RTdGF0dXNdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtzdGFydGVkQXQsIHNldFN0YXJ0ZWRBdF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2lucHV0LCBzZXRJbnB1dF0gPSBjcmVhdGVTaWduYWwoJycpXG4gIGNvbnN0IFttb2RlbCwgc2V0TW9kZWxdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbE1vZGVsKVxuICBjb25zdCBbZGVmYXVsdE1vZGVsLCBzZXREZWZhdWx0TW9kZWxdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbE1vZGVsKVxuICBjb25zdCBbZWZmb3J0LCBzZXRFZmZvcnRdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbEVmZm9ydClcbiAgY29uc3QgW2RlZmF1bHRFZmZvcnQsIHNldERlZmF1bHRFZmZvcnRdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbEVmZm9ydClcbiAgY29uc3QgW3Nob3dFZmZvcnRQYW5lbCwgc2V0U2hvd0VmZm9ydFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dUaGVtZVBhbmVsLCBzZXRTaG93VGhlbWVQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFt0aGVtZVByZWYsIHNldFRoZW1lUHJlZl0gPSBjcmVhdGVTaWduYWwoYm9vdC50aGVtZVByZWYgfHwgJ2F1dG8nKVxuICBjb25zdCBbcXVldWVkLCBzZXRRdWV1ZWRdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbc2VudCwgc2V0U2VudF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtoaXN0SWR4LCBzZXRIaXN0SWR4XSA9IGNyZWF0ZVNpZ25hbCgtMSlcbiAgY29uc3QgW2NtZEluZGV4LCBzZXRDbWRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2NtZEN5Y2xlLCBzZXRDbWRDeWNsZV0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2ZpbGVJbmRleCwgc2V0RmlsZUluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZmlsZUxpc3QsIHNldEZpbGVMaXN0XSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW2ZpbGVzRGlzbWlzc2VkLCBzZXRGaWxlc0Rpc21pc3NlZF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IGNyZWF0ZVNpZ25hbCgnY2hhdCcpXG4gIGNvbnN0IFt2ZXJib3NlLCBzZXRWZXJib3NlXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dNb2RlbFBhbmVsLCBzZXRTaG93TW9kZWxQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93SGlzdG9yeVBhbmVsLCBzZXRTaG93SGlzdG9yeVBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2hpc3RTY29wZSwgc2V0SGlzdFNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbaGlzdFByb21wdHMsIHNldEhpc3RQcm9tcHRzXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3Nob3dSZXN1bWVQYW5lbCwgc2V0U2hvd1Jlc3VtZVBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Jlc3VtZVNjb3BlLCBzZXRSZXN1bWVTY29wZV0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Jlc3VtZVNlc3Npb25zLCBzZXRSZXN1bWVTZXNzaW9uc10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtyZXN1bWVMb2FkaW5nLCBzZXRSZXN1bWVMb2FkaW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dNY3BQYW5lbCwgc2V0U2hvd01jcFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dQcm9qZWN0UGFuZWwsIHNldFNob3dQcm9qZWN0UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbaW5mb1BhbmVsLCBzZXRJbmZvUGFuZWxdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtzaG93U2hlbGxzUGFuZWwsIHNldFNob3dTaGVsbHNQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93V2FrZXVwc1BhbmVsLCBzZXRTaG93V2FrZXVwc1BhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dDb25uZWN0UGFuZWwsIHNldFNob3dDb25uZWN0UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbYXV0aFByb3ZpZGVycywgc2V0QXV0aFByb3ZpZGVyc10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtzaGVsbHNWZXJzaW9uLCBzZXRTaGVsbHNWZXJzaW9uXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbcHJvamVjdHMsIHNldFByb2plY3RzXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3Byb2plY3RzTG9hZGluZywgc2V0UHJvamVjdHNMb2FkaW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW21jcFNlcnZlcnMsIHNldE1jcFNlcnZlcnNdID0gY3JlYXRlU2lnbmFsKG1jcC5saXN0KCkpXG4gIGNvbnN0IFtjb21wbGV0aW5nLCBzZXRDb21wbGV0aW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2NvbXBJbmRleCwgc2V0Q29tcEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbcmV3aW5kU3RlcCwgc2V0UmV3aW5kU3RlcF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW3Jld2luZFRhcmdldCwgc2V0UmV3aW5kVGFyZ2V0XSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbb2Zmc2V0LCBzZXRPZmZzZXRdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtmb2xsb3csIHNldEZvbGxvd10gPSBjcmVhdGVTaWduYWwodHJ1ZSlcblxuICBjb25zdCByZWZzID0gYm9vdC5yZWZzXG4gIHJlZnMuc2Vzc2lvbiA/Pz0gbnVsbFxuICByZWZzLmFsbEV2ZW50cyA/Pz0gW11cbiAgcmVmcy5wZXJzaXN0ZWQgPz89IDBcbiAgcmVmcy5hYm9ydCA9IHJlZnMuYWJvcnQgfHwgbnVsbFxuICByZWZzLnJld2luZFVuZG8gPSByZWZzLnJld2luZFVuZG8gfHwgbnVsbFxuICByZWZzLnF1aXRBdCA/Pz0gMFxuICByZWZzLmF0dGFjaG1lbnRzID8/PSBuZXcgTWFwKClcbiAgcmVmcy5pbWFnZUNvdW50ID8/PSAwXG5cbiAgYm9vdC5zZXRNY3BOb3RpZnkoKCkgPT4gc2V0TWNwU2VydmVycyhib290Lm1jcC5saXN0KCkpKVxuICBib290LnNldFNoZWxsc05vdGlmeSgoKSA9PiBzZXRTaGVsbHNWZXJzaW9uKCh2KSA9PiB2ICsgMSkpXG4gIGJvb3Quc2V0V2FrZXVwc05vdGlmeSgoKSA9PiBzZXRTaGVsbHNWZXJzaW9uKCh2KSA9PiB2ICsgMSkpXG4gIGJvb3Quc2V0V2FrZXVwc0ZpcmUoKHdha2V1cCkgPT4ge1xuICAgIGZsYXNoKGB3YWtlLXVwICR7d2FrZXVwLmlkfSBmaXJlZGApXG4gICAgbm90ZVN5c3RlbShcbiAgICAgIGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gc2NoZWR1bGVkIHdha2UtdXAgJHt3YWtldXAuaWR9IGZpcmVkLiBOb3RlIHRvIHNlbGY6ICR7d2FrZXVwLm5vdGV9YCxcbiAgICAgIHsgd2FrZTogdHJ1ZSB9LFxuICAgIClcbiAgfSlcbiAgYm9vdC5zZXRTaGVsbHNFeGl0KChzaGVsbCkgPT4ge1xuICAgIGlmIChzaGVsbC5raWxsZWRCeSA9PT0gJ21vZGVsJykge1xuICAgICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGtpbGxlZGApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKHNoZWxsLmtpbGxlZEJ5ID09PSAndXNlcicpIHtcbiAgICAgIGZsYXNoKGBzaGVsbCAke3NoZWxsLmlkfSBraWxsZWRgKVxuICAgICAgbm90ZVN5c3RlbShgW3N5c3RlbSBub3RpZmljYXRpb25dIHRoZSB1c2VyIG1hbnVhbGx5IGtpbGxlZCBiYWNrZ3JvdW5kIHNoZWxsICR7c2hlbGwuaWR9ICgke3NoZWxsLmNvbW1hbmR9KSBmcm9tIHRoZSBzaGVsbHMgcGFuZWwgKFNJR1RFUk0pLiBUaGlzIHdhcyBkZWxpYmVyYXRlOyBkbyBub3QgcmVzdGFydCBpdCB1bmxlc3MgYXNrZWQuYCwgeyB3YWtlOiBmYWxzZSB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGZsYXNoKGBzaGVsbCAke3NoZWxsLmlkfSBleGl0ZWQgXHUwMEI3IGNvZGUgJHtzaGVsbC5leGl0Q29kZX1gKVxuICAgIGNvbnN0IHRhaWwgPSBib290LnNoZWxscy5vdXRwdXQoc2hlbGwuaWQsIHsgdGFpbDogMzAgfSkub3V0cHV0XG4gICAgbm90ZVN5c3RlbShcbiAgICAgIGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gYmFja2dyb3VuZCBzaGVsbCAke3NoZWxsLmlkfSAoJHtzaGVsbC5jb21tYW5kfSkgZXhpdGVkIHdpdGggY29kZSAke3NoZWxsLmV4aXRDb2RlfS5gICtcbiAgICAgICAgKHRhaWwgPyBgXFxuUmVjZW50IG91dHB1dDpcXG4ke3RhaWx9YCA6ICcnKSxcbiAgICAgIHsgd2FrZTogdHJ1ZSB9LFxuICAgIClcbiAgfSlcblxuICBmdW5jdGlvbiBub3RlU3lzdGVtKHRleHQsIHsgd2FrZSB9KSB7XG4gICAgcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXMgPz89IFtdXG4gICAgcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXMucHVzaCh7IHRleHQsIHdha2UgfSlcbiAgICBmbHVzaFN5c3RlbU5vdGVzKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGZsdXNoU3lzdGVtTm90ZXMoKSB7XG4gICAgaWYgKCFyZWZzLnBlbmRpbmdTeXN0ZW1Ob3Rlcz8ubGVuZ3RoIHx8IGJ1c3koKSB8fCB2aWV3KCkgIT09ICdjaGF0JyB8fCAhcmVmcy5zZXNzaW9uKSByZXR1cm5cbiAgICBjb25zdCBub3RlcyA9IHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzXG4gICAgcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXMgPSBbXVxuICAgIHBlcnNpc3QobWFrZUV2ZW50KCdzeXN0ZW1fbm90ZScsIHsgdGV4dDogbm90ZXMubWFwKChuKSA9PiBuLnRleHQpLmpvaW4oJ1xcblxcbicpIH0pKVxuICAgIHJlRGVyaXZlKClcbiAgICBpZiAobm90ZXMuc29tZSgobikgPT4gbi53YWtlKSkgcnVuQWdlbnRUdXJuKClcbiAgfVxuXG4gIGNvbnN0IHNraWxsQ29tbWFuZHMgPSBza2lsbHMubGlzdCgpLm1hcCgocykgPT4gKHsgbmFtZTogcy5uYW1lLCBkZXNjOiBgc2tpbGwgXHUwMEI3ICR7cy5kZXNjcmlwdGlvbiB8fCBzLnNvdXJjZX1gLCBza2lsbDogdHJ1ZSB9KSlcbiAgY29uc3QgdXNlckNvbW1hbmRzID0gYm9vdC5jb21tYW5kcy5saXN0KCkubWFwKChjKSA9PiAoeyBuYW1lOiBjLm5hbWUsIGRlc2M6IGBjb21tYW5kIFx1MDBCNyAke2MuZGVzY3JpcHRpb24gfHwgYy5zb3VyY2V9YCwgY29tbWFuZDogdHJ1ZSB9KSlcbiAgY29uc3QgYnlOYW1lID0gbmV3IE1hcCgpXG4gIGNvbnN0IHNoYWRvd2VkID0gW11cbiAgZm9yIChjb25zdCBjIG9mIFsuLi5DT01NQU5EUywgLi4uc2tpbGxDb21tYW5kcywgLi4udXNlckNvbW1hbmRzXSkge1xuICAgIGlmIChieU5hbWUuaGFzKGMubmFtZSkpIHNoYWRvd2VkLnB1c2goYCR7Yy5za2lsbCA/ICdza2lsbCcgOiAnY29tbWFuZCd9IFwiJHtjLm5hbWV9XCJgKVxuICAgIGVsc2UgYnlOYW1lLnNldChjLm5hbWUsIGMpXG4gIH1cbiAgY29uc3QgYWxsQ29tbWFuZHMgPSBbLi4uYnlOYW1lLnZhbHVlcygpXVxuICBpZiAoc2hhZG93ZWQubGVuZ3RoICYmICFyZWZzLndhcm5lZFNoYWRvd2VkKSB7XG4gICAgcmVmcy53YXJuZWRTaGFkb3dlZCA9IHRydWVcbiAgICBzZXRUaW1lb3V0KCgpID0+IGZsYXNoKGBzaGFkb3dlZCBieSBhbiBlYXJsaWVyIG5hbWUsIHJlbmFtZSB0byB1c2U6ICR7c2hhZG93ZWQuam9pbignLCAnKX1gKSwgMClcbiAgfVxuXG4gIGNvbnN0IHRvYXN0ID0gdXNlVG9hc3Qoe1xuICAgIGR1cmF0aW9uOiAzNTAwLFxuICAgIHBvc2l0aW9uOiAndG9wLXJpZ2h0JyxcbiAgICByZW5kZXI6IChtZXNzYWdlKSA9PiA8dGV4dCBzdHlsZT17eyBiZzogYWNjZW50KCksIGNvbG9yOiAnYmxhY2snLCBib2xkOiB0cnVlIH19PntgICR7bWVzc2FnZX0gYH08L3RleHQ+LFxuICB9KVxuXG4gIGZ1bmN0aW9uIGZsYXNoKG1zZykge1xuICAgIHRvYXN0KG1zZylcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuc3VyZVNlc3Npb24oKSB7XG4gICAgaWYgKCFyZWZzLnNlc3Npb24pIHJlZnMuc2Vzc2lvbiA9IGNyZWF0ZVNlc3Npb24oeyBjd2QsIHJvb3QgfSlcbiAgICB3aGlsZSAocmVmcy5wZXJzaXN0ZWQgPCByZWZzLmFsbEV2ZW50cy5sZW5ndGgpIHtcbiAgICAgIHJlZnMuc2Vzc2lvbi5hcHBlbmQocmVmcy5hbGxFdmVudHNbcmVmcy5wZXJzaXN0ZWRdKVxuICAgICAgcmVmcy5wZXJzaXN0ZWQrK1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBlcnNpc3QoZXZlbnQpIHtcbiAgICByZWZzLmFsbEV2ZW50cy5wdXNoKGV2ZW50KVxuICAgIGlmIChyZWZzLnNlc3Npb24pIHtcbiAgICAgIHJlZnMuc2Vzc2lvbi5hcHBlbmQoZXZlbnQpXG4gICAgICByZWZzLnBlcnNpc3RlZCA9IHJlZnMuYWxsRXZlbnRzLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlRGVyaXZlKCkge1xuICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlU3RhdGUocmVmcy5hbGxFdmVudHMpXG4gICAgc2V0RGVyaXZlZChzdGF0ZSlcbiAgICBzZXRBY2NlbnQoc3RhdGUuY29sb3IpXG4gICAgYm9vdC5zZXRUaGVtZT8uKHsgYWNjZW50OiBzdGF0ZS5jb2xvciB8fCBERUZBVUxUX0FDQ0VOVCB9KVxuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2hTdHJlYW0oaXRlbXMpIHtcbiAgICBjb25zdCB0ZXh0ID0gc3RyZWFtaW5nKClcbiAgICBpZiAodGV4dCkgaXRlbXMucHVzaCh7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0IH0pXG4gICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBleGVjdXRlVHVybih0ZXh0KSB7XG4gICAgY29uc3QgeyBjb250ZW50IH0gPSBmaW5hbGl6ZVVzZXJDb250ZW50KHRleHQsIHJlZnMuYXR0YWNobWVudHMpXG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ21lc3NhZ2UnLCB7IG1lc3NhZ2U6IHsgcm9sZTogJ3VzZXInLCBjb250ZW50IH0gfSkpXG4gICAgZW5zdXJlU2Vzc2lvbigpXG4gICAgcmVEZXJpdmUoKVxuICAgIGF3YWl0IHJ1bkFnZW50VHVybigpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBwZXJmb3JtQ29tcGFjdGlvbihpbnN0cnVjdGlvbnMgPSAnJykge1xuICAgIGlmIChidXN5KCkgfHwgY29tcGFjdGluZygpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVkKClcbiAgICBpZiAoc3RhdGUucHJvdmlkZXJIaXN0b3J5Lmxlbmd0aCA8IDQpIHJldHVybiBmbGFzaCgnbm90aGluZyB0byBjb21wYWN0IHlldCcpXG5cbiAgICBsZXQgYXV0aCA9IG51bGxcbiAgICBpZiAobW9kZWwoKS5wcm92aWRlciA9PT0gJ2NvZGV4Jykge1xuICAgICAgYXV0aCA9IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICAgIGlmICghYXV0aCkgcmV0dXJuIGZsYXNoKCdjb2RleCBtb2RlbHMgbmVlZCBhIENoYXRHUFQgc2lnbi1pbjogcnVuIC9jb25uZWN0JylcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyaWVzID0gdXNlckVudHJpZXMoc3RhdGUpXG4gICAgY29uc3Qga2VlcEZyb20gPSBlbnRyaWVzLmF0KC0yKT8uZXZlbnRJZCA/PyBlbnRyaWVzLmF0KC0xKT8uZXZlbnRJZFxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIHJlZnMuYWJvcnQgPSBjb250cm9sbGVyXG4gICAgc2V0QnVzeSh0cnVlKVxuICAgIHNldENvbXBhY3RpbmcodHJ1ZSlcbiAgICBzZXRDb21wYWN0U3RhdHVzKG51bGwpXG4gICAgc2V0U3RhcnRlZEF0KERhdGUubm93KCkpXG4gICAgbGV0IHN0cmVhbWVkID0gJydcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3ID0gYXdhaXQgY29tcGFjdEhpc3Rvcnkoe1xuICAgICAgICBoaXN0b3J5OiBzdGF0ZS5wcm92aWRlckhpc3RvcnksXG4gICAgICAgIG1vZGVsTmFtZTogbW9kZWwoKS5uYW1lLFxuICAgICAgICBhdXRoLFxuICAgICAgICBwcm9tcHQ6IGNvbXBhY3Rpb25Qcm9tcHQoaW5zdHJ1Y3Rpb25zKSxcbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgb25TdHJlYW06IChldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudC50eXBlICE9PSAnY29udGVudCcpIHJldHVyblxuICAgICAgICAgIHN0cmVhbWVkICs9IGV2ZW50LmNvbnRlbnRcbiAgICAgICAgICBzZXRDb21wYWN0U3RhdHVzKGNvbXBhY3RQcm9ncmVzcyhzdHJlYW1lZCkpXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgY29uc3Qgc3VtbWFyeSA9IGZvcm1hdENvbXBhY3RTdW1tYXJ5KHJhdylcbiAgICAgIGlmICghc3VtbWFyeSkgdGhyb3cgbmV3IEVycm9yKCdlbXB0eSBzdW1tYXJ5JylcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdjb21wYWN0JywgeyBzdW1tYXJ5LCBrZWVwRnJvbSwgc2Vzc2lvbkZpbGU6IHJlZnMuc2Vzc2lvbj8uZmlsZSB8fCBudWxsIH0pKVxuICAgICAgcmVEZXJpdmUoKVxuICAgICAgZmxhc2goJ2NvbXBhY3RlZCBcdTAwQjcgcmVjZW50IG1lc3NhZ2VzIGtlcHQgdmVyYmF0aW0nKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGNvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIGZsYXNoKCdjb21wYWN0aW9uIGNhbmNlbGxlZCcpXG4gICAgICBlbHNlIGZsYXNoKGBjb21wYWN0IGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCAxMDApfWApXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldENvbXBhY3RpbmcoZmFsc2UpXG4gICAgICBzZXRDb21wYWN0U3RhdHVzKG51bGwpXG4gICAgICBzZXRCdXN5KGZhbHNlKVxuICAgICAgcmVmcy5hYm9ydCA9IG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBxID0gcXVldWVkKClcbiAgICBpZiAocS5sZW5ndGggPiAwKSB7XG4gICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICBpZiAoY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkgc2V0SW5wdXQocS5qb2luKCdcXG4nKSlcbiAgICAgIGVsc2UgZXhlY3V0ZVR1cm4ocS5qb2luKCdcXG4nKSlcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtYXliZUF1dG9Db21wYWN0KCkge1xuICAgIGlmIChib290LmF1dG9Db21wYWN0ID09PSBmYWxzZSB8fCBidXN5KCkgfHwgY29tcGFjdGluZygpKSByZXR1cm5cbiAgICBjb25zdCBsaW1pdCA9IG1vZGVsKCkuY29udGV4dFxuICAgIGNvbnN0IHVzZWQgPSBkZXJpdmVkKCkubGFzdFByb21wdFRva2Vuc1xuICAgIGlmICghbGltaXQgfHwgIXVzZWQgfHwgZGVyaXZlZCgpLmxhc3RQcm9tcHRNb2RlbCAhPT0gbW9kZWwoKS5uYW1lKSByZXR1cm5cbiAgICBjb25zdCByYXRpbyA9IHVzZWQgLyBsaW1pdFxuICAgIGlmIChyYXRpbyA+PSAwLjg1KSB7XG4gICAgICBmbGFzaChgY29udGV4dCAke01hdGgucm91bmQocmF0aW8gKiAxMDApfSUgZnVsbCBcdTAwQjcgYXV0by1jb21wYWN0aW5nYClcbiAgICAgIHBlcmZvcm1Db21wYWN0aW9uKClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBydW5BZ2VudFR1cm4oKSB7XG4gICAgbGV0IGF1dGggPSBudWxsXG4gICAgaWYgKG1vZGVsKCkucHJvdmlkZXIgPT09ICdjb2RleCcpIHtcbiAgICAgIGF1dGggPSBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICBpZiAoIWF1dGgpIHtcbiAgICAgICAgZmxhc2goJ2NvZGV4IG1vZGVscyBuZWVkIGEgQ2hhdEdQVCBzaWduLWluOiBydW4gL2Nvbm5lY3QnKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgc2V0Rm9sbG93KHRydWUpXG4gICAgc2V0QnVzeSh0cnVlKVxuICAgIHNldFN0YXJ0ZWRBdChEYXRlLm5vdygpKVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIHJlZnMuYWJvcnQgPSBjb250cm9sbGVyXG4gICAgY29uc3QgbG9hZGVkQmVmb3JlID0gbmV3IFNldCh0cmFja2VyLmxvYWRlZClcbiAgICBib290LnNraWxscyA9IGF3YWl0IGNyZWF0ZVNraWxsSW5kZXgoYm9vdC5yb290KS5jYXRjaCgoKSA9PiBib290LnNraWxscykgPz8gYm9vdC5za2lsbHNcbiAgICBib290LmNvbW1hbmRzID0gYXdhaXQgY3JlYXRlQ29tbWFuZEluZGV4KGJvb3Qucm9vdCkuY2F0Y2goKCkgPT4gYm9vdC5jb21tYW5kcykgPz8gYm9vdC5jb21tYW5kc1xuICAgIGNvbnN0IGZyZXNoU2tpbGxzID0gYm9vdC5za2lsbHNcbiAgICBjb25zdCB1c2VyVG9vbFNjYW4gPSBhd2FpdCBzY2FuVXNlclRvb2xzKHsgY3dkLCByb290OiBib290LnJvb3QgfSkuY2F0Y2goKCkgPT4gKHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH0pKVxuICAgIGZvciAoY29uc3QgZmFpbHVyZSBvZiB1c2VyVG9vbFNjYW4uZXJyb3JzKSB7XG4gICAgICBjb25zdCBrZXkgPSBgJHtmYWlsdXJlLmZpbGV9OiR7ZmFpbHVyZS5lcnJvcn1gXG4gICAgICBpZiAoIXJlZnMud2FybmVkVG9vbHM/LmhhcyhrZXkpKSB7XG4gICAgICAgIDsocmVmcy53YXJuZWRUb29scyA/Pz0gbmV3IFNldCgpKS5hZGQoa2V5KVxuICAgICAgICBmbGFzaChgdG9vbCBza2lwcGVkOiAke2ZhaWx1cmUuZmlsZS5zcGxpdCgnLycpLnBvcCgpfSBcdTAwQjcgJHtmYWlsdXJlLmVycm9yfWApXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHsgdG9vbHMsIHJlY29yZGVyIH0gPSBjcmVhdGVUb29sc2V0KHtcbiAgICAgIGN3ZCxcbiAgICAgIHRyYWNrZXIsXG4gICAgICBza2lsbHM6IGZyZXNoU2tpbGxzLFxuICAgICAgc2hlbGxzOiBib290LnNoZWxscyxcbiAgICAgIHdha2V1cHM6IGJvb3Qud2FrZXVwcyxcbiAgICAgIG1lbW9yeTogYm9vdC5tZW1vcnksXG4gICAgICBtY3BUb29sczogbWNwLnRvb2xzKCksXG4gICAgICB1c2VyVG9vbHM6IHVzZXJUb29sU2Nhbi50b29scyxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSlcblxuICAgIHJlZnMudHVyblRob3VnaHRzID0gJydcbiAgICBjb25zdCBvblN0cmVhbSA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0aGlua2luZycpIHtcbiAgICAgICAgcmVmcy50dXJuVGhvdWdodHMgKz0gZXZlbnQuY29udGVudFxuICAgICAgICBzZXRUaGlua2luZ05vdyh0cnVlKVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnY29udGVudCcpIHtcbiAgICAgICAgc2V0VGhpbmtpbmdOb3coZmFsc2UpXG4gICAgICAgIHNldFN0cmVhbWluZygocykgPT4gKHMgfHwgJycpICsgZXZlbnQuY29udGVudClcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY2FsbHNfcmVhZHknKSB7XG4gICAgICAgIHNldFRoaW5raW5nTm93KGZhbHNlKVxuICAgICAgICBzZXRPdmVybGF5KChvKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IFsuLi5vXVxuICAgICAgICAgIGZsdXNoU3RyZWFtKG5leHQpXG4gICAgICAgICAgcmV0dXJuIG5leHRcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXhlY3V0aW5nJykge1xuICAgICAgICBzZXRPdmVybGF5KChvKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IFsuLi5vXVxuICAgICAgICAgIGZsdXNoU3RyZWFtKG5leHQpXG4gICAgICAgICAgbGV0IGFyZ3MgPSB7fVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhcmdzID0gSlNPTi5wYXJzZShldmVudC5jYWxsLmZ1bmN0aW9uLmFyZ3VtZW50cylcbiAgICAgICAgICB9IGNhdGNoIHt9XG4gICAgICAgICAgbmV4dC5wdXNoKHtcbiAgICAgICAgICAgIGtpbmQ6ICd0b29sJyxcbiAgICAgICAgICAgIGNhbGxJZDogZXZlbnQuY2FsbC5pZCxcbiAgICAgICAgICAgIG5hbWU6IGV2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZSxcbiAgICAgICAgICAgIHRpdGxlOiB1aVRpdGxlKGV2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZSwgYXJncyksXG4gICAgICAgICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVybiBuZXh0XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NvbXBsZXRlJyB8fCBldmVudC50eXBlID09PSAndG9vbF9lcnJvcicpIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSByZWNvcmRlci5lbnRyaWVzLmF0KC0xKVxuICAgICAgICBzZXRPdmVybGF5KChvKSA9PlxuICAgICAgICAgIG8ubWFwKChpdGVtKSA9PlxuICAgICAgICAgICAgaXRlbS5raW5kID09PSAndG9vbCcgJiYgaXRlbS5jYWxsSWQgPT09IGV2ZW50LmNhbGwuaWRcbiAgICAgICAgICAgICAgPyB7IC4uLml0ZW0sIC4uLihlbnRyeT8uY2FsbElkID09PSBldmVudC5jYWxsLmlkID8gZW50cnkgOiB7fSksIGtpbmQ6ICd0b29sJywgc3RhdHVzOiBlbnRyeT8uc3RhdHVzIHx8ICdkb25lJyB9XG4gICAgICAgICAgICAgIDogaXRlbSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdFxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBydW5UdXJuKHtcbiAgICAgICAgaGlzdG9yeTogZGVyaXZlZCgpLnByb3ZpZGVySGlzdG9yeSxcbiAgICAgICAgdG9vbHMsXG4gICAgICAgIHJlY29yZGVyLFxuICAgICAgICBtb2RlbE5hbWU6IG1vZGVsKCkubmFtZSxcbiAgICAgICAgZWZmb3J0OiBlZmZvcnRBcHBsaWVzKCkgPyBlZmZvcnQoKSA/PyAnYXV0bycgOiBudWxsLFxuICAgICAgICBhdXRoLFxuICAgICAgICBzeXN0ZW06IGJ1aWxkU3lzdGVtUHJvbXB0KHtcbiAgICAgICAgICBjd2QsXG4gICAgICAgICAgY29udGV4dEZpbGVzOiBzdGFydHVwQ29udGV4dC5maWxlcyxcbiAgICAgICAgICBza2lsbHM6IGZyZXNoU2tpbGxzLmxpc3QoKSxcbiAgICAgICAgICBtZW1vcnlJbmRleFRleHQ6IG1lbW9yeUluZGV4KGF3YWl0IGJvb3QubWVtb3J5Lmxpc3QoKS5jYXRjaCgoKSA9PiBbXSksIGJvb3Qucm9vdCksXG4gICAgICAgIH0pLFxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBvblN0cmVhbSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXRPdmVybGF5KFtdKVxuICAgICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gICAgICBzZXRUaGlua2luZ05vdyhmYWxzZSlcbiAgICAgIHNldEJ1c3koZmFsc2UpXG4gICAgICByZWZzLmFib3J0ID0gbnVsbFxuICAgICAgZmxhc2goYGVycm9yOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDEyMCl9YClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChyZWZzLnR1cm5UaG91Z2h0cykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rob3VnaHRzJywgeyB0ZXh0OiByZWZzLnR1cm5UaG91Z2h0cyB9KSlcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVzdWx0Lm1lc3NhZ2VzKSBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZSB9KSlcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlY29yZGVyLmVudHJpZXMpIHBlcnNpc3QobWFrZUV2ZW50KCd0b29sX21ldGEnLCBlbnRyeSkpXG4gICAgZm9yIChjb25zdCBwYXRoIG9mIHRyYWNrZXIubG9hZGVkKSB7XG4gICAgICBpZiAoIWxvYWRlZEJlZm9yZS5oYXMocGF0aCkpIHBlcnNpc3QobWFrZUV2ZW50KCdjb250ZXh0X2ZpbGUnLCB7IHBhdGggfSkpXG4gICAgfVxuICAgIGlmIChyZXN1bHQudXNhZ2UpIHBlcnNpc3QobWFrZUV2ZW50KCd1c2FnZScsIHsgbW9kZWw6IG1vZGVsKCkubmFtZSwgdXNhZ2U6IHJlc3VsdC51c2FnZSwgbGFzdFByb21wdDogcmVzdWx0Lmxhc3RQcm9tcHRUb2tlbnMgfSkpXG4gICAgaWYgKHJlc3VsdC5pbnRlcnJ1cHRlZCkgcGVyc2lzdChtYWtlRXZlbnQoJ2ludGVycnVwdCcsIHt9KSlcblxuICAgIHNldE92ZXJsYXkoW10pXG4gICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gICAgc2V0VGhpbmtpbmdOb3coZmFsc2UpXG4gICAgcmVEZXJpdmUoKVxuICAgIHNldEJ1c3koZmFsc2UpXG4gICAgcmVmcy5hYm9ydCA9IG51bGxcbiAgICBpZiAocmVzdWx0LnN0YWxsZWQpIGZsYXNoKCdtb2RlbCBzdGFsbGVkIFx1MDBCNyB0dXJuIGludGVycnVwdGVkJylcblxuICAgIGNvbnN0IHEgPSBxdWV1ZWQoKVxuICAgIGlmIChxLmxlbmd0aCA+IDApIHtcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIGlmIChyZXN1bHQuaW50ZXJydXB0ZWQpIHNldElucHV0KHEuam9pbignXFxuJykpXG4gICAgICBlbHNlIHtcbiAgICAgICAgZXhlY3V0ZVR1cm4ocS5qb2luKCdcXG4nKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIGZsdXNoU3lzdGVtTm90ZXMoKVxuICAgIG1heWJlQXV0b0NvbXBhY3QoKVxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGxldGlvblNvdXJjZShuYW1lKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjb2xvcicpIHJldHVybiBPYmplY3Qua2V5cyhTRVNTSU9OX0NPTE9SUylcbiAgICBpZiAobmFtZSA9PT0gJ3RoZW1lJykgcmV0dXJuIFsuLi5wYWxldHRlTGlzdCgpLm1hcCgocCkgPT4gcC5rZXkpLCAnYXV0byddXG4gICAgaWYgKG5hbWUgPT09ICdlZmZvcnQnKSByZXR1cm4gWydkZWZhdWx0JywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXVxuICAgIGlmIChuYW1lID09PSAnbW9kZWwnKSByZXR1cm4gbW9kZWxzLmZpbHRlcigobSkgPT4gbS5hdmFpbGFibGUgIT09IGZhbHNlKS5tYXAoKG0pID0+IG0ubmFtZSlcbiAgICBjb25zdCBjbWQgPSBhbGxDb21tYW5kcy5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUpXG4gICAgaWYgKGNtZD8uc2tpbGwgfHwgY21kPy5jb21tYW5kKSByZXR1cm4gZmlsZUxpc3QoKVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBmdW5jdGlvbiBkaXNtaXNzQ29tcGxldGlvbigpIHtcbiAgICBzZXRDb21wbGV0aW5nKGZhbHNlKVxuICAgIHNldENvbXBJbmRleCgwKVxuICB9XG5cbiAgZnVuY3Rpb24gYWNjZXB0Q29tcGxldGlvbih2YWx1ZSwgY3R4LCBjYW5kaWRhdGUpIHtcbiAgICBzZXRJbnB1dChhcHBseUNvbXBsZXRpb24odmFsdWUsIGN0eCwgY2FuZGlkYXRlKSlcbiAgICBkaXNtaXNzQ29tcGxldGlvbigpXG4gIH1cblxuICBmdW5jdGlvbiBzZW5kKHRleHQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRleHQudHJpbSgpXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuXG4gICAgZGlzbWlzc0NvbXBsZXRpb24oKVxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgIGNvbnN0IFtuYW1lLCAuLi5yZXN0XSA9IHZhbHVlLnNsaWNlKDEpLnNwbGl0KC9cXHMrLylcbiAgICAgIGNvbnN0IG1hdGNoID0gYWxsQ29tbWFuZHMuZmluZCgoYykgPT4gYy5uYW1lID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpXG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgc2V0SW5wdXQoJycpXG4gICAgICAgIHJ1bkNvbW1hbmQobWF0Y2gsIHJlc3Quam9pbignICcpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgc2V0U2VudCgocykgPT4gWy4uLnMsIHsgdGV4dDogdmFsdWUsIGF0OiBEYXRlLm5vdygpIH1dKVxuICAgIHNldEhpc3RJZHgoLTEpXG4gICAgYXBwZW5kUHJvbXB0KHJvb3QsIHZhbHVlKS5jYXRjaCgoKSA9PiB7fSlcbiAgICBpZiAoYnVzeSgpKSB7XG4gICAgICBzZXRRdWV1ZWQoKHEpID0+IFsuLi5xLCB2YWx1ZV0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZXhlY3V0ZVR1cm4odmFsdWUpXG4gIH1cblxuICBmdW5jdGlvbiBpbnRlcnJ1cHQoKSB7XG4gICAgaWYgKCFidXN5KCkpIHJldHVyblxuICAgIHJlZnMuYWJvcnQ/LmFib3J0KClcbiAgfVxuXG4gIGNvbnN0IGZtdFRva2VucyA9IChuKSA9PiAobiA+PSAxMDAwID8gYCR7KG4gLyAxMDAwKS50b0ZpeGVkKDEpfWtgIDogU3RyaW5nKG4pKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW5Db250ZXh0UGFuZWwoKSB7XG4gICAgY29uc3QgZXN0ID0gKHRleHQpID0+IE1hdGgucm91bmQoU3RyaW5nKHRleHQpLmxlbmd0aCAvIDQpXG4gICAgY29uc3QgdG9rID0gKG4pID0+IGB+JHtmbXRUb2tlbnMobil9IHRva2BcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuXG4gICAgY29uc3QgbWVtb3J5SW5kZXhUZXh0ID0gbWVtb3J5SW5kZXgoYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKSwgYm9vdC5yb290KVxuICAgIGNvbnN0IHNraWxsTGlzdCA9IGJvb3Quc2tpbGxzLmxpc3QoKVxuICAgIGNvbnN0IGZpbGVzID0gc3RhcnR1cENvbnRleHQuZmlsZXNcbiAgICBjb25zdCBzeXN0ZW1GdWxsID0gYnVpbGRTeXN0ZW1Qcm9tcHQoeyBjd2QsIGNvbnRleHRGaWxlczogZmlsZXMsIHNraWxsczogc2tpbGxMaXN0LCBtZW1vcnlJbmRleFRleHQgfSlcbiAgICBjb25zdCBzeXN0ZW1CYXNlID0gYnVpbGRTeXN0ZW1Qcm9tcHQoeyBjd2QsIGNvbnRleHRGaWxlczogW10sIHNraWxsczogW10sIG1lbW9yeUluZGV4VGV4dDogJycgfSlcbiAgICBjb25zdCB1c2VyVG9vbFNjYW4gPSBhd2FpdCBzY2FuVXNlclRvb2xzKHsgY3dkLCByb290OiBib290LnJvb3QgfSkuY2F0Y2goKCkgPT4gKHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH0pKVxuICAgIGNvbnN0IHsgdG9vbHMgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgY3dkLFxuICAgICAgdHJhY2tlcixcbiAgICAgIHNraWxsczogYm9vdC5za2lsbHMsXG4gICAgICBzaGVsbHM6IGJvb3Quc2hlbGxzLFxuICAgICAgd2FrZXVwczogYm9vdC53YWtldXBzLFxuICAgICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICAgIG1jcFRvb2xzOiBtY3AudG9vbHMoKSxcbiAgICAgIHVzZXJUb29sczogdXNlclRvb2xTY2FuLnRvb2xzLFxuICAgIH0pXG4gICAgY29uc3QgdG9vbFRva2VucyA9IGVzdChKU09OLnN0cmluZ2lmeSh0b29scykpXG5cbiAgICBjb25zdCBoaXN0b3J5ID0gc3RhdGUucHJvdmlkZXJIaXN0b3J5XG4gICAgY29uc3QgY29tcGFjdGVkID0gaGlzdG9yeVswXT8ucm9sZSA9PT0gJ3VzZXInXG4gICAgICAmJiBzdGF0ZS5oaXN0b3J5RXZlbnRJZHNbMF0gPT09IG51bGxcbiAgICAgICYmIFN0cmluZyhoaXN0b3J5WzBdLmNvbnRlbnQpLnN0YXJ0c1dpdGgoJ1tzeXN0ZW0gbm90aWZpY2F0aW9uXSBUaGUgZWFybGllciBwb3J0aW9uJylcbiAgICBjb25zdCBzdW1tYXJ5VG9rZW5zID0gY29tcGFjdGVkID8gZXN0KGhpc3RvcnlbMF0uY29udGVudCkgOiAwXG4gICAgY29uc3QgbWVzc2FnZXMgPSBjb21wYWN0ZWQgPyBoaXN0b3J5LnNsaWNlKDEpIDogaGlzdG9yeVxuICAgIGNvbnN0IG1lc3NhZ2VUb2tlbnMgPSBlc3QoSlNPTi5zdHJpbmdpZnkobWVzc2FnZXMpKVxuXG4gICAgY29uc3Qgcm93cyA9IFtcbiAgICAgIHsgbmFtZTogJ3N5c3RlbSBwcm9tcHQnLCBkZXNjOiAnaWRlbnRpdHksIGVudmlyb25tZW50LCB0b29sIGd1aWRhbmNlJywgbm90ZTogdG9rKGVzdChzeXN0ZW1CYXNlKSkgfSxcbiAgICAgIHsgbmFtZTogYHRvb2wgc2NoZW1hcyAoJHt0b29scy5sZW5ndGh9KWAsIGRlc2M6IHRvb2xzLm1hcCgodCkgPT4gdC5uYW1lKS5qb2luKCcgXHUwMEI3ICcpLCBub3RlOiB0b2sodG9vbFRva2VucykgfSxcbiAgICBdXG4gICAgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgICAgcm93cy5wdXNoKHtcbiAgICAgICAgbmFtZTogYHByb2plY3QgaW5zdHJ1Y3Rpb25zICgke2ZpbGVzLmxlbmd0aH0pYCxcbiAgICAgICAgZGVzYzogZmlsZXMubWFwKChmKSA9PiBmLnBhdGgucmVwbGFjZShgJHtib290LnJvb3R9L2AsICcnKSkuam9pbignLCAnKSxcbiAgICAgICAgbm90ZTogdG9rKGZpbGVzLnJlZHVjZSgoc3VtLCBmKSA9PiBzdW0gKyBlc3QoZi5jb250ZW50KSwgMCkpLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHNraWxsTGlzdC5sZW5ndGgpIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIG5hbWU6IGBza2lsbHMgaW5kZXggKCR7c2tpbGxMaXN0Lmxlbmd0aH0pYCxcbiAgICAgICAgZGVzYzogc2tpbGxMaXN0Lm1hcCgocykgPT4gcy5uYW1lKS5qb2luKCcsICcpLFxuICAgICAgICBub3RlOiB0b2soZXN0KHNraWxsTGlzdC5tYXAoKHMpID0+IGAtICR7cy5uYW1lfTogJHtzLmRlc2NyaXB0aW9ufWApLmpvaW4oJ1xcbicpKSksXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAobWVtb3J5SW5kZXhUZXh0KSB7XG4gICAgICByb3dzLnB1c2goeyBuYW1lOiAnbWVtb3J5IGluZGV4JywgZGVzYzogJ29uZSBsaW5lIHBlciBzYXZlZCBtZW1vcnknLCBub3RlOiB0b2soZXN0KG1lbW9yeUluZGV4VGV4dCkpIH0pXG4gICAgfVxuICAgIGlmIChjb21wYWN0ZWQpIHtcbiAgICAgIHJvd3MucHVzaCh7IG5hbWU6ICdjb21wYWN0aW9uIHN1bW1hcnknLCBkZXNjOiAnc3RhbmRzIGluIGZvciBldmVyeXRoaW5nIGJlZm9yZSB0aGUgbGFzdCBjb21wYWN0Jywgbm90ZTogdG9rKHN1bW1hcnlUb2tlbnMpIH0pXG4gICAgfVxuICAgIHJvd3MucHVzaCh7XG4gICAgICBuYW1lOiBgY29udmVyc2F0aW9uICgke21lc3NhZ2VzLmxlbmd0aH0gbWVzc2FnZXMpYCxcbiAgICAgIGRlc2M6IGNvbXBhY3RlZCA/ICdrZXB0IHZlcmJhdGltIHNpbmNlIHRoZSBsYXN0IGNvbXBhY3QnIDogJ2V2ZXJ5IG1lc3NhZ2UgdGhpcyBzZXNzaW9uJyxcbiAgICAgIG5vdGU6IHRvayhtZXNzYWdlVG9rZW5zKSxcbiAgICB9KVxuXG4gICAgY29uc3QgdG90YWwgPSBlc3Qoc3lzdGVtRnVsbCkgKyB0b29sVG9rZW5zICsgc3VtbWFyeVRva2VucyArIG1lc3NhZ2VUb2tlbnNcbiAgICBjb25zdCBsaW1pdCA9IG1vZGVsKCkuY29udGV4dFxuICAgIHJvd3MucHVzaCh7XG4gICAgICBuYW1lOiAnZXN0aW1hdGVkIG5leHQgcmVxdWVzdCcsXG4gICAgICBkZXNjOiBsaW1pdCA/IGBvZiAke2ZtdFRva2VucyhsaW1pdCl9IGNvbnRleHQgXHUwMEI3IH4ke01hdGgucm91bmQoKHRvdGFsIC8gbGltaXQpICogMTAwKX0lYCA6ICdjb250ZXh0IHNpemUgdW5rbm93biBmb3IgdGhpcyBtb2RlbCcsXG4gICAgICBub3RlOiB0b2sodG90YWwpLFxuICAgIH0pXG4gICAgaWYgKHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgJiYgc3RhdGUubGFzdFByb21wdE1vZGVsID09PSBtb2RlbCgpLm5hbWUpIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIG5hbWU6ICdsYXN0IG1lYXN1cmVkIHJlcXVlc3QnLFxuICAgICAgICBkZXNjOiAncHJvdmlkZXItcmVwb3J0ZWQgaW5wdXQgdG9rZW5zLCB0aGUgbnVtYmVyIGJlaGluZCBjdHggJScsXG4gICAgICAgIG5vdGU6IGAke3N0YXRlLmxhc3RQcm9tcHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gdG9rYCxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgc2V0SW5mb1BhbmVsKHsgdGl0bGU6IGBDb250ZXh0IFx1MDBCNyAke21vZGVsKCkubmFtZX1gLCByb3dzIH0pXG4gIH1cblxuICBjb25zdCB0aGVtZUl0ZW1zID0gKCkgPT4gW1xuICAgIC4uLnBhbGV0dGVMaXN0KCksXG4gICAgeyBrZXk6ICdhdXRvJywgZGVzYzogYGZvbGxvdyB0aGUgdGVybWluYWwgKGRldGVjdGVkOiAke2Jvb3QuZGV0ZWN0ZWRUaGVtZSB8fCAnZGFyayd9KWAgfSxcbiAgXVxuXG4gIGZ1bmN0aW9uIHBhbGV0dGVGb3IocHJlZikge1xuICAgIHJldHVybiBwcmVmID09PSAnYXV0bycgPyBib290LmRldGVjdGVkVGhlbWUgfHwgJ2RhcmsnIDogcHJlZlxuICB9XG5cbiAgZnVuY3Rpb24gcHJldmlld1BhbGV0dGUocHJlZikge1xuICAgIHNldFBhbGV0dGUocGFsZXR0ZUZvcihwcmVmKSlcbiAgICBib290LnNldFRoZW1lPy4oeyBhY2NlbnQ6IGFjY2VudCgpIH0pXG4gIH1cblxuICBmdW5jdGlvbiBhcHBseVRoZW1lUHJlZihwcmVmKSB7XG4gICAgc2V0VGhlbWVQcmVmKHByZWYpXG4gICAgcHJldmlld1BhbGV0dGUocHJlZilcbiAgICB3cml0ZUNvbmZpZyh7IHRoZW1lOiBwcmVmID09PSAnYXV0bycgPyB1bmRlZmluZWQgOiBwcmVmIH0pLmNhdGNoKCgpID0+IHt9KVxuICAgIGZsYXNoKHByZWYgPT09ICdhdXRvJyA/IGB0aGVtZTogYXV0byBcdTAwQjcgZm9sbG93aW5nIHRoZSB0ZXJtaW5hbCAoJHtwYWxldHRlRm9yKCdhdXRvJyl9KWAgOiBgdGhlbWU6ICR7cHJlZn1gKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcnVuQ29tbWFuZChjLCBhcmdzID0gJycpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3MgIT09ICdzdHJpbmcnKSBhcmdzID0gJydcbiAgICBzZXRJbnB1dCgnJylcbiAgICBzZXRDbWRDeWNsZShudWxsKVxuICAgIGlmIChjLm5hbWUgPT09ICdyZW5hbWUnKSB7XG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBmbGFzaCgndXNhZ2U6IC9yZW5hbWUgPG5ldyBuYW1lPicpXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgndGl0bGUnLCB7IHRleHQ6IGFyZ3MgfSkpXG4gICAgICBlbnN1cmVTZXNzaW9uKClcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKGBzZXNzaW9uIHJlbmFtZWQgdG8gXCIke2FyZ3N9XCJgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb2xvcicpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoU0VTU0lPTl9DT0xPUlMpXG4gICAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKFNFU1NJT05fQ09MT1JTKVxuICAgICAgbGV0IHZhbHVlXG4gICAgICBpZiAoIWFyZ3MpIHtcbiAgICAgICAgY29uc3QgbmV4dCA9ICh2YWx1ZXMuaW5kZXhPZihkZXJpdmVkKCkuY29sb3IpICsgMSkgJSB2YWx1ZXMubGVuZ3RoXG4gICAgICAgIHZhbHVlID0gdmFsdWVzW25leHRdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IFNFU1NJT05fQ09MT1JTW2FyZ3MudG9Mb3dlckNhc2UoKV0gfHwgKC9eI1swLTlhLWZBLUZdezZ9JC8udGVzdChhcmdzKSA/IGFyZ3MgOiBudWxsKVxuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gZmxhc2goYHVzYWdlOiAvY29sb3IgdG8gY3ljbGUsIG9yIC9jb2xvciA8JHtuYW1lcy5qb2luKCd8Jyl9fCNoZXg+YClcbiAgICAgIH1cbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdjb2xvcicsIHsgdmFsdWUgfSkpXG4gICAgICBlbnN1cmVTZXNzaW9uKClcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGNvbnN0IG5hbWUgPSBuYW1lc1t2YWx1ZXMuaW5kZXhPZih2YWx1ZSldXG4gICAgICBmbGFzaChgc2Vzc2lvbiBjb2xvcjogJHtuYW1lIHx8IHZhbHVlfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3RoZW1lJykge1xuICAgICAgaWYgKCFhcmdzKSByZXR1cm4gc2V0U2hvd1RoZW1lUGFuZWwodHJ1ZSlcbiAgICAgIGNvbnN0IGNob2ljZSA9IGFyZ3MudG9Mb3dlckNhc2UoKVxuICAgICAgY29uc3QgdmFsaWQgPSBbLi4ucGFsZXR0ZUxpc3QoKS5tYXAoKHApID0+IHAua2V5KSwgJ2F1dG8nXVxuICAgICAgaWYgKCF2YWxpZC5pbmNsdWRlcyhjaG9pY2UpKSByZXR1cm4gZmxhc2goYHRoZW1lOiAke3BhbGV0dGVOYW1lKCl9IFx1MDBCNyAvdGhlbWUgPCR7dmFsaWQuam9pbignfCcpfT5gKVxuICAgICAgYXBwbHlUaGVtZVByZWYoY2hvaWNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLnNraWxsKSB7XG4gICAgICBjb25zdCBib2R5ID0gYXdhaXQgc2tpbGxzLmxvYWQoYy5uYW1lKVxuICAgICAgaWYgKCFib2R5KSByZXR1cm4gZmxhc2goYGNvdWxkIG5vdCBsb2FkIHNraWxsICR7Yy5uYW1lfWApXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnc2tpbGwnLCB7IG5hbWU6IGMubmFtZSwgc291cmNlOiAndXNlcicgfSkpXG4gICAgICBzZW5kKGBGb2xsb3cgdGhlc2Ugc2tpbGwgaW5zdHJ1Y3Rpb25zIG5vdy5cXG5cXG4ke2JvZHl9YClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5jb21tYW5kKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgYm9vdC5jb21tYW5kcy5sb2FkKGMubmFtZSwgYXJncylcbiAgICAgIGlmICghdGV4dCkgcmV0dXJuIGZsYXNoKGBjb3VsZCBub3QgbG9hZCBjb21tYW5kICR7Yy5uYW1lfWApXG4gICAgICBzZW5kKHRleHQpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2Nvbm5lY3QnKSByZXR1cm4gb3BlbkNvbm5lY3RQYW5lbCgpXG4gICAgaWYgKGMubmFtZSA9PT0gJ21vZGVsJykge1xuICAgICAgaWYgKCFhcmdzKSByZXR1cm4gc2V0U2hvd01vZGVsUGFuZWwodHJ1ZSlcbiAgICAgIGNvbnN0IGV4YWN0ID0gbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gYXJncylcbiAgICAgIGNvbnN0IGFkaG9jID0gIWV4YWN0ICYmIGFyZ3MuaW5jbHVkZXMoJy8nKSA/IGFkaG9jTW9kZWwoYXJncywgYm9vdC5wcm92aWRlcnMpIDogbnVsbFxuICAgICAgY29uc3Qgc2NvcmVkID0gZXhhY3QgfHwgYWRob2NcbiAgICAgICAgPyBbXVxuICAgICAgICA6IG1vZGVsc1xuICAgICAgICAgICAgLm1hcCgobSkgPT4gW2Z1enp5U2NvcmUoYXJncywgbS5uYW1lKSwgbV0pXG4gICAgICAgICAgICAuZmlsdGVyKChbc2NvcmVdKSA9PiBzY29yZSA+PSAwKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICAgICAgY29uc3QgcGljayA9IGV4YWN0IHx8IGFkaG9jIHx8IHNjb3JlZFswXT8uWzFdXG4gICAgICBpZiAoIXBpY2spIHJldHVybiBmbGFzaChgbm8gYXZhaWxhYmxlIG1vZGVsIG1hdGNoZXMgXCIke2FyZ3N9XCJgKVxuICAgICAgaWYgKHBpY2suYXZhaWxhYmxlID09PSBmYWxzZSkgcmV0dXJuIGZsYXNoKGBzZXQgJHtwaWNrLmtleUhpbnR9IGluIHlvdXIgZW52aXJvbm1lbnQgdG8gdXNlICR7cGljay5uYW1lfWApXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnbW9kZWxfc3dpdGNoJywgeyBmcm9tOiBtb2RlbCgpLm5hbWUsIHRvOiBwaWNrLm5hbWUgfSkpXG4gICAgICBzZXRNb2RlbChwaWNrKVxuICAgICAgZmxhc2goYWRob2MgPyBgbW9kZWwgc2V0IHRvICR7cGljay5uYW1lfSAobm90IGluIGNhdGFsb2csIHByaWNpbmcgdW5rbm93bilgIDogYG1vZGVsIHNldCB0byAke3BpY2submFtZX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdlZmZvcnQnKSB7XG4gICAgICBpZiAoIWVmZm9ydEFwcGxpZXMoKSkgcmV0dXJuIGZsYXNoKGAke21vZGVsKCkubmFtZX0gZG9lcyBub3Qgc3VwcG9ydCBlZmZvcnQgY29udHJvbGApXG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBzZXRTaG93RWZmb3J0UGFuZWwodHJ1ZSlcbiAgICAgIGNvbnN0IGxldmVsID0gYXJncy50b0xvd2VyQ2FzZSgpXG4gICAgICBpZiAobGV2ZWwgPT09ICdkZWZhdWx0JykgcmV0dXJuIHNldFNlc3Npb25FZmZvcnQobnVsbClcbiAgICAgIGlmICghRUZGT1JUX0xFVkVMUy5zb21lKChsKSA9PiBsLmtleSA9PT0gbGV2ZWwpKSByZXR1cm4gZmxhc2goJ3VzYWdlOiAvZWZmb3J0IDxkZWZhdWx0fGxvd3xtZWRpdW18aGlnaHxtYXg+JylcbiAgICAgIHJldHVybiBzZXRTZXNzaW9uRWZmb3J0KGxldmVsKVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29udGV4dCcpIHJldHVybiBvcGVuQ29udGV4dFBhbmVsKClcbiAgICBpZiAoYy5uYW1lID09PSAnaGVscCcpIHJldHVybiBzZXRWaWV3KCdoZWxwJylcbiAgICBpZiAoYy5uYW1lID09PSAnbWNwJykgcmV0dXJuIHNldFNob3dNY3BQYW5lbCh0cnVlKVxuICAgIGlmIChjLm5hbWUgPT09ICdzaGVsbHMnKSByZXR1cm4gc2V0U2hvd1NoZWxsc1BhbmVsKHRydWUpXG4gICAgaWYgKGMubmFtZSA9PT0gJ3dha2V1cHMnKSByZXR1cm4gc2V0U2hvd1dha2V1cHNQYW5lbCh0cnVlKVxuICAgIGlmIChjLm5hbWUgPT09ICdtZW1vcnknKSB7XG4gICAgICBjb25zdCBtZW1vcmllcyA9IGF3YWl0IGJvb3QubWVtb3J5Lmxpc3QoKS5jYXRjaCgoKSA9PiBbXSlcbiAgICAgIHJldHVybiBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogYE1lbW9yeSBcdTAwQjcgJHtzaG9ydGVuUGF0aChib290LnJvb3QpfWAsXG4gICAgICAgIHJvd3M6IG1lbW9yaWVzLm1hcCgobSkgPT4gKHsgbmFtZTogbS5uYW1lLCBkZXNjOiBtLmRlc2NyaXB0aW9uLCBub3RlOiBtLnNjb3BlIH0pKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdyZXN1bWUnKSB7XG4gICAgICBzZXRTaG93UmVzdW1lUGFuZWwodHJ1ZSlcbiAgICAgIHJlZnJlc2hTZXNzaW9ucyhyZXN1bWVTY29wZSgpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdwcm9qZWN0JykgcmV0dXJuIG9wZW5Qcm9qZWN0UGFuZWwoKVxuICAgIGlmIChjLm5hbWUgPT09ICdjd2QnKSB7XG4gICAgICBjb25zdCByb290Tm90ZSA9IGJvb3Qucm9vdCAhPT0gYm9vdC5jd2QgPyBgIFx1MDBCNyBwcm9qZWN0IHJvb3QgJHtzaG9ydGVuUGF0aChib290LnJvb3QpfWAgOiAnJ1xuICAgICAgcmV0dXJuIGZsYXNoKGAke2Jvb3QuZGlzcGxheUN3ZH0ke3Jvb3ROb3RlfWApXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdza2lsbHMnKSB7XG4gICAgICByZXR1cm4gc2V0SW5mb1BhbmVsKHtcbiAgICAgICAgdGl0bGU6ICdTa2lsbHMnLFxuICAgICAgICByb3dzOiBza2lsbHMubGlzdCgpLm1hcCgocykgPT4gKHsgbmFtZTogcy5uYW1lLCBkZXNjOiBzLmRlc2NyaXB0aW9uLCBub3RlOiBzLnNvdXJjZSB9KSksXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29tbWFuZHMnKSB7XG4gICAgICByZXR1cm4gc2V0SW5mb1BhbmVsKHtcbiAgICAgICAgdGl0bGU6ICdDb21tYW5kcycsXG4gICAgICAgIHJvd3M6IFtcbiAgICAgICAgICAuLi5DT01NQU5EUy5tYXAoKGNtZCkgPT4gKHsgbmFtZTogYC8ke2NtZC5uYW1lfWAsIGRlc2M6IGNtZC5kZXNjLCBub3RlOiAnYnVpbHRpbicgfSkpLFxuICAgICAgICAgIC4uLmJvb3QuY29tbWFuZHMubGlzdCgpLm1hcCgoY21kKSA9PiAoeyBuYW1lOiBgLyR7Y21kLm5hbWV9YCwgZGVzYzogY21kLmRlc2NyaXB0aW9uLCBub3RlOiBjbWQuc291cmNlIH0pKSxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICd0b29scycpIHtcbiAgICAgIGNvbnN0IHNjYW4gPSBhd2FpdCBzY2FuVXNlclRvb2xzKHsgY3dkOiBib290LmN3ZCwgcm9vdDogYm9vdC5yb290IH0pLmNhdGNoKCgpID0+ICh7IHRvb2xzOiBbXSwgZXJyb3JzOiBbXSB9KSlcbiAgICAgIGNvbnN0IHsgdG9vbHM6IGJ1aWx0aW5zIH0gPSBjcmVhdGVUb29sc2V0KHsgY3dkOiBib290LmN3ZCwgdHJhY2tlciwgc2tpbGxzIH0pXG4gICAgICBjb25zdCBtY3BDb3VudCA9IG1jcC50b29scygpLmxlbmd0aFxuICAgICAgc2V0SW5mb1BhbmVsKHtcbiAgICAgICAgdGl0bGU6IGBUb29scyR7bWNwQ291bnQgPyBgIFx1MDBCNyBwbHVzICR7bWNwQ291bnR9IE1DUCAoc2VlIC9tY3ApYCA6ICcnfWAsXG4gICAgICAgIHJvd3M6IFtcbiAgICAgICAgICAuLi5idWlsdGlucy5tYXAoKHQpID0+ICh7IG5hbWU6IHQubmFtZSwgZGVzYzogdC5kZXNjcmlwdGlvbi5zcGxpdCgnXFxuJylbMF0sIG5vdGU6ICdidWlsdGluJyB9KSksXG4gICAgICAgICAgLi4uc2Nhbi50b29scy5tYXAoKHQpID0+ICh7IG5hbWU6IHQubmFtZSwgZGVzYzogdC5kZXNjcmlwdGlvbiwgbm90ZTogYCR7dC5zb3VyY2V9IFx1MDBCNyAke3QuX2ZpbGUuc3BsaXQoJy8nKS5wb3AoKX1gIH0pKSxcbiAgICAgICAgICAuLi5zY2FuLmVycm9ycy5tYXAoKGUpID0+ICh7IG5hbWU6IGUuZmlsZS5zcGxpdCgnLycpLnBvcCgpLCBkZXNjOiBlLmVycm9yLCBub3RlOiAnYnJva2VuJyB9KSksXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICduZXcnKSB7XG4gICAgICBpZiAoYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgICByZWZzLnNlc3Npb24gPSBudWxsXG4gICAgICByZWZzLmFsbEV2ZW50cyA9IFtdXG4gICAgICByZWZzLnBlcnNpc3RlZCA9IDBcbiAgICAgIHJlZnMucmV3aW5kVW5kbyA9IG51bGxcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIHNldFNlbnQoW10pXG4gICAgICBzZXRNb2RlbChkZWZhdWx0TW9kZWwoKSlcbiAgICAgIHNldEVmZm9ydChkZWZhdWx0RWZmb3J0KCkpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBmbGFzaCgnbmV3IHNlc3Npb24nKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdyZXdpbmQnKSB7XG4gICAgICBpZiAoYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgICBpZiAodXNlckVudHJpZXMoZGVyaXZlZCgpKS5sZW5ndGggPT09IDApIHJldHVybiBmbGFzaCgnbm90aGluZyB0byByZXdpbmQgeWV0JylcbiAgICAgIHNldFJld2luZFN0ZXAoJ3BpY2snKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjbGVhcicpIHtcbiAgICAgIGlmIChidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdjbGVhcicsIHt9KSlcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKCdjb252ZXJzYXRpb24gY2xlYXJlZCcpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NvbXBhY3QnKSByZXR1cm4gcGVyZm9ybUNvbXBhY3Rpb24oYXJncylcbiAgICBpZiAoYy5uYW1lID09PSAnY29zdCcpIHtcbiAgICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlZCgpXG4gICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoc3RhdGUudXNhZ2VCeU1vZGVsKVxuICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmxhc2goJ25vIHVzYWdlIHlldCcpXG4gICAgICBjb25zdCBjb3N0T2YgPSAoYnlNb2RlbCkgPT5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoYnlNb2RlbCkucmVkdWNlKChzdW0sIFtuYW1lLCB1c2FnZV0pID0+IHN1bSArIGVzdGltYXRlQ29zdChmaW5kTW9kZWwobW9kZWxzLCBuYW1lKSwgdXNhZ2UpLCAwKVxuICAgICAgY29uc3Qgc3BlbnQgPSBjb3N0T2Yoc3RhdGUudXNhZ2VCeU1vZGVsKVxuICAgICAgY29uc3QgYWN0aXZlID0gY29zdE9mKHN0YXRlLnVzYWdlQWN0aXZlQnlNb2RlbClcbiAgICAgIGNvbnN0IHsgcHJvbXB0VG9rZW5zLCBjb21wbGV0aW9uVG9rZW5zIH0gPSBzdGF0ZS51c2FnZVxuICAgICAgY29uc3QgYmFzZSA9IGAkJHtzcGVudC50b0ZpeGVkKDQpfSBzcGVudCBcdTAwQjcgJHtwcm9tcHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gaW4gXHUwMEI3ICR7Y29tcGxldGlvblRva2Vucy50b0xvY2FsZVN0cmluZygpfSBvdXRgXG4gICAgICBmbGFzaChzcGVudCAtIGFjdGl2ZSA+IDAuMDAwMDUgPyBgJHtiYXNlfSBcdTAwQjcgY3VycmVudCBjb252ZXJzYXRpb24gJCR7YWN0aXZlLnRvRml4ZWQoNCl9YCA6IGJhc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2V4cG9ydCcpIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBqb2luKGN3ZCwgYHBpY28tZXhwb3J0LSR7RGF0ZS5ub3coKX0ubWRgKVxuICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGUsIHRyYW5zY3JpcHRUb01hcmtkb3duKGRlcml2ZWQoKS50cmFuc2NyaXB0LCB7IHRpdGxlOiBgcGljbyBzZXNzaW9uIFx1MDBCNyAke2N3ZH1gIH0pKVxuICAgICAgZmxhc2goYGV4cG9ydGVkIHRvICR7ZmlsZX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaEF1dGhQcm92aWRlcnMoKSB7XG4gICAgY29uc3Qgb3BlbmFpID0gYXdhaXQgb3BlbmFpU3RhdHVzKCkuY2F0Y2goKCkgPT4gKHsgY29ubmVjdGVkOiBmYWxzZSwgZW1haWw6IG51bGwgfSkpXG4gICAgc2V0QXV0aFByb3ZpZGVycyhbXG4gICAgICB7IGlkOiAnb3BlbmFpJywgbGFiZWw6ICdPcGVuQUkgXHUwMEI3IENoYXRHUFQgLyBDb2RleCBwbGFuJywgY29ubmVjdGVkOiBvcGVuYWkuY29ubmVjdGVkLCBlbWFpbDogb3BlbmFpLmVtYWlsIH0sXG4gICAgXSlcbiAgfVxuXG4gIGZ1bmN0aW9uIG9wZW5Db25uZWN0UGFuZWwoKSB7XG4gICAgc2V0U2hvd0Nvbm5lY3RQYW5lbCh0cnVlKVxuICAgIHJlZnJlc2hBdXRoUHJvdmlkZXJzKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbm5lY3RQcm92aWRlcihwcm92aWRlcikge1xuICAgIGlmIChwcm92aWRlci5pZCAhPT0gJ29wZW5haScpIHJldHVyblxuICAgIHNldFNob3dDb25uZWN0UGFuZWwoZmFsc2UpXG4gICAgZmxhc2goJ29wZW5pbmcgeW91ciBicm93c2VyIGZvciBDaGF0R1BUIHNpZ24taW4uLi4nKVxuICAgIGNvbm5lY3RPcGVuQUkoKVxuICAgICAgLnRoZW4oYXN5bmMgKHsgZW1haWwgfSkgPT4ge1xuICAgICAgICBib290LnByb3ZpZGVycyA9IFsuLi5uZXcgU2V0KFsuLi5ib290LnByb3ZpZGVycywgJ2NvZGV4J10pXVxuICAgICAgICBjb25zdCBjcmVkcyA9IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICAgICAgY29uc3QgY29kZXggPSAoYXdhaXQgbG9hZENvZGV4TW9kZWxzKGNyZWRzKSkubWFwKChtKSA9PiAoeyAuLi5tLCBhdmFpbGFibGU6IHRydWUsIGtleUhpbnQ6ICcvY29ubmVjdCcgfSkpXG4gICAgICAgIGJvb3QubW9kZWxzID0gWy4uLmJvb3QubW9kZWxzLmZpbHRlcigobSkgPT4gbS5wcm92aWRlciAhPT0gJ2NvZGV4JyksIC4uLmNvZGV4XVxuICAgICAgICByZURlcml2ZSgpXG4gICAgICAgIGZsYXNoKGBjb25uZWN0ZWQgYXMgJHtlbWFpbCB8fCAneW91ciBDaGF0R1BUIGFjY291bnQnfSBcdTAwQjcgJHtjb2RleC5sZW5ndGh9IGNvZGV4IG1vZGVscyB1bmxvY2tlZCBpbiAvbW9kZWxgKVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiBmbGFzaChgY29ubmVjdCBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMTIwKX1gKSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3RQcm92aWRlcihwcm92aWRlcikge1xuICAgIGlmIChwcm92aWRlci5pZCAhPT0gJ29wZW5haScpIHJldHVyblxuICAgIGF3YWl0IGRpc2Nvbm5lY3RPcGVuQUkoKS5jYXRjaCgoKSA9PiB7fSlcbiAgICBib290LnByb3ZpZGVycyA9IGJvb3QucHJvdmlkZXJzLmZpbHRlcigocCkgPT4gcCAhPT0gJ2NvZGV4JylcbiAgICBib290Lm1vZGVscyA9IGJvb3QubW9kZWxzLm1hcCgobSkgPT4gKG0ucHJvdmlkZXIgPT09ICdjb2RleCcgPyB7IC4uLm0sIGF2YWlsYWJsZTogZmFsc2UgfSA6IG0pKVxuICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSBzZXRNb2RlbChkZWZhdWx0TW9kZWwoKSlcbiAgICByZWZyZXNoQXV0aFByb3ZpZGVycygpXG4gICAgZmxhc2goJ2Rpc2Nvbm5lY3RlZCBmcm9tIENoYXRHUFQnKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVmcmVzaFNlc3Npb25zKHNjb3BlSW5kZXgpIHtcbiAgICBzZXRSZXN1bWVMb2FkaW5nKHRydWUpXG4gICAgbGlzdFNlc3Npb25zKHsgc2NvcGU6IFJFU1VNRV9TQ09QRVNbc2NvcGVJbmRleF0sIHJvb3QgfSlcbiAgICAgIC50aGVuKChzZXNzaW9ucykgPT4gc2V0UmVzdW1lU2Vzc2lvbnMoc2Vzc2lvbnMuZmlsdGVyKChzKSA9PiBzLmhlYWRlci5pZCAhPT0gcmVmcy5zZXNzaW9uPy5pZCkpKVxuICAgICAgLmZpbmFsbHkoKCkgPT4gc2V0UmVzdW1lTG9hZGluZyhmYWxzZSkpXG4gIH1cblxuICBmdW5jdGlvbiBzaG9ydGVuUGF0aChwYXRoKSB7XG4gICAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICAgIHJldHVybiBwYXRoLnN0YXJ0c1dpdGgoaG9tZSkgPyBwYXRoLnJlcGxhY2UoaG9tZSwgJ34nKSA6IHBhdGhcbiAgfVxuXG4gIGZ1bmN0aW9uIG9wZW5Qcm9qZWN0UGFuZWwoKSB7XG4gICAgc2V0U2hvd1Byb2plY3RQYW5lbCh0cnVlKVxuICAgIHNldFByb2plY3RzTG9hZGluZyh0cnVlKVxuICAgIGxpc3RTZXNzaW9ucyh7IHNjb3BlOiAnZXZlcnl3aGVyZScsIHJvb3QgfSlcbiAgICAgIC50aGVuKChtZXRhcykgPT4ge1xuICAgICAgICBjb25zdCBieVJvb3QgPSBuZXcgTWFwKClcbiAgICAgICAgZm9yIChjb25zdCBtIG9mIG1ldGFzKSB7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBieVJvb3QuZ2V0KG0uaGVhZGVyLnJvb3QpXG4gICAgICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICAgICAgYnlSb290LnNldChtLmhlYWRlci5yb290LCB7XG4gICAgICAgICAgICAgIHJvb3Q6IG0uaGVhZGVyLnJvb3QsXG4gICAgICAgICAgICAgIHBhdGg6IHNob3J0ZW5QYXRoKG0uaGVhZGVyLnJvb3QpLFxuICAgICAgICAgICAgICBsYXRlc3Q6IG0sXG4gICAgICAgICAgICAgIGNvdW50OiAxLFxuICAgICAgICAgICAgICBjdXJyZW50OiBtLmhlYWRlci5yb290ID09PSBib290LnJvb3QsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbnRyeS5jb3VudCsrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldFByb2plY3RzKFsuLi5ieVJvb3QudmFsdWVzKCldKVxuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHNldFByb2plY3RzTG9hZGluZyhmYWxzZSkpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBzd2l0Y2hQcm9qZWN0KG1ldGEpIHtcbiAgICBpZiAoYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzTWNwID0gYm9vdC5tY3BcbiAgICAgIGNvbnN0IG5leHQgPSBhd2FpdCBib290LnJlYnVpbGQobWV0YS5oZWFkZXIucm9vdClcbiAgICAgIHByZXZpb3VzTWNwLmNsb3NlQWxsKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgICBwcm9jZXNzLmNoZGlyKG5leHQuY3dkKVxuICAgICAgT2JqZWN0LmFzc2lnbihib290LCBuZXh0KVxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFxceDFiXTA7cGljbyBcdTAwQjcgJHtuZXh0LnJvb3Quc3BsaXQoJy8nKS5wb3AoKX1cXHgwN2ApXG4gICAgICBuZXh0Lm1jcC5jb25uZWN0QWxsKClcbiAgICAgIHNldE1jcFNlcnZlcnMobmV4dC5tY3AubGlzdCgpKVxuICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgc2V0RmlsZUxpc3QoW10pXG4gICAgICBhd2FpdCByZXN1bWVTZXNzaW9uKG1ldGEpXG4gICAgICBmbGFzaChgc3dpdGNoZWQgdG8gJHtuZXh0LmRpc3BsYXlDd2R9YClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGZsYXNoKGBzd2l0Y2ggZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDgwKX1gKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZVNlc3Npb25NZXRhKG1ldGEpIHtcbiAgICBpZiAocmVmcy5zZXNzaW9uPy5pZCA9PT0gbWV0YS5oZWFkZXIuaWQpIHtcbiAgICAgIHJldHVybiBmbGFzaCgnY2Fubm90IGRlbGV0ZSB0aGUgYWN0aXZlIHNlc3Npb24gXHUwMEI3IC9uZXcgZmlyc3QsIHRoZW4gZGVsZXRlIGl0JylcbiAgICB9XG4gICAgY29uc3QgYXJtZWQgPSByZWZzLmRlbGV0ZUFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQuZmlsZSAhPT0gbWV0YS5maWxlIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMuZGVsZXRlQXJtID0geyBmaWxlOiBtZXRhLmZpbGUsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGRlbGV0ZSBcIiR7bWV0YS50aXRsZS5zbGljZSgwLCA1MCl9XCJgKVxuICAgIH1cbiAgICByZWZzLmRlbGV0ZUFybSA9IG51bGxcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2Vzc2lvbihtZXRhLmZpbGUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIGZsYXNoKCdzZXNzaW9uIGRlbGV0ZWQnKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYGRlbGV0ZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVzdW1lU2Vzc2lvbihtZXRhKSB7XG4gICAgc2V0U2hvd1Jlc3VtZVBhbmVsKGZhbHNlKVxuICAgIHNldFNob3dQcm9qZWN0UGFuZWwoZmFsc2UpXG4gICAgaWYgKG1ldGEuaGVhZGVyLnJvb3QgIT09IGJvb3Qucm9vdCkgcmV0dXJuIHN3aXRjaFByb2plY3QobWV0YSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBoZWFkZXIsIGV2ZW50cyB9ID0gYXdhaXQgbG9hZFNlc3Npb24obWV0YS5maWxlKVxuICAgICAgcmVmcy5zZXNzaW9uID0gb3BlblNlc3Npb24oeyBmaWxlOiBtZXRhLmZpbGUsIGhlYWRlciB9KVxuICAgICAgcmVmcy5hbGxFdmVudHMgPSBbLi4uZXZlbnRzXVxuICAgICAgcmVmcy5wZXJzaXN0ZWQgPSBldmVudHMubGVuZ3RoXG4gICAgICByZWZzLnJld2luZFVuZG8gPSBudWxsXG4gICAgICByZURlcml2ZSgpXG4gICAgICBjb25zdCBjYXRhbG9nTWF0Y2ggPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBkZXJpdmVkKCkubW9kZWwgJiYgbS5hdmFpbGFibGUgIT09IGZhbHNlKVxuICAgICAgY29uc3QgcmVzdG9yZWQgPSBkZXJpdmVkKCkubW9kZWxcbiAgICAgICAgJiYgKGNhdGFsb2dNYXRjaCB8fCBhZGhvY01vZGVsKGRlcml2ZWQoKS5tb2RlbCwgYm9vdC5wcm92aWRlcnMpKVxuICAgICAgaWYgKHJlc3RvcmVkKSB7XG4gICAgICAgIHNldE1vZGVsKHJlc3RvcmVkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgICAgIGlmIChkZXJpdmVkKCkubW9kZWwpIGZsYXNoKGBtb2RlbCAke2Rlcml2ZWQoKS5tb2RlbH0gdW5hdmFpbGFibGUsIHVzaW5nICR7ZGVmYXVsdE1vZGVsKCkubmFtZX1gKVxuICAgICAgfVxuICAgICAgc2V0RWZmb3J0KGRlcml2ZWQoKS5lZmZvcnQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRFZmZvcnQoKSA6IGRlcml2ZWQoKS5lZmZvcnQpXG4gICAgICBzZXRTZW50KHVzZXJFbnRyaWVzKGRlcml2ZWQoKSkubWFwKChlKSA9PiAoeyB0ZXh0OiByZWNhbGxUZXh0KGUpLCBhdDogaGVhZGVyLmNyZWF0ZWRBdCB9KSkpXG4gICAgICBzZXRGb2xsb3codHJ1ZSlcbiAgICAgIGZsYXNoKGByZXN1bWVkIFx1MDBCNyAke21ldGEudHVybnN9ICR7bWV0YS50dXJucyA9PT0gMSA/ICd0dXJuJyA6ICd0dXJucyd9IFx1MDBCNyAke3RpbWVBZ28obWV0YS5hdCl9YClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGZsYXNoKGByZXN1bWUgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDgwKX1gKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9wZW5IaXN0b3J5U2VhcmNoKCkge1xuICAgIGNvbnN0IHNlc3Npb24gPSBzZW50KClcbiAgICBzZXRIaXN0UHJvbXB0cyhkZWR1cGVQcm9tcHRzKHNlc3Npb24pKVxuICAgIHNldFNob3dIaXN0b3J5UGFuZWwodHJ1ZSlcbiAgICBzZXRIaXN0U2NvcGUoMClcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlZHVwZVByb21wdHMocG9vbCkge1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KClcbiAgICBjb25zdCBvdXQgPSBbXVxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgWy4uLnBvb2xdLnNvcnQoKGEsIGIpID0+IGIuYXQgLSBhLmF0KSkge1xuICAgICAgaWYgKHNlZW4uaGFzKGVudHJ5LnRleHQpKSBjb250aW51ZVxuICAgICAgc2Vlbi5hZGQoZW50cnkudGV4dClcbiAgICAgIG91dC5wdXNoKGVudHJ5KVxuICAgIH1cbiAgICByZXR1cm4gb3V0XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBzd2l0Y2hIaXN0U2NvcGUobmV4dCkge1xuICAgIHNldEhpc3RTY29wZShuZXh0KVxuICAgIGlmIChuZXh0ID09PSAwKSByZXR1cm4gc2V0SGlzdFByb21wdHMoZGVkdXBlUHJvbXB0cyhzZW50KCkpKVxuICAgIGNvbnN0IHByb2plY3QgPSBhd2FpdCBsb2FkUHJvamVjdFByb21wdHMocm9vdClcbiAgICBpZiAobmV4dCA9PT0gMSkgcmV0dXJuIHNldEhpc3RQcm9tcHRzKGRlZHVwZVByb21wdHMoWy4uLnNlbnQoKSwgLi4ucHJvamVjdF0pKVxuICAgIGNvbnN0IGdsb2JhbCA9IGF3YWl0IGxvYWRHbG9iYWxQcm9tcHRzKClcbiAgICBzZXRIaXN0UHJvbXB0cyhkZWR1cGVQcm9tcHRzKFsuLi5zZW50KCksIC4uLnByb2plY3QsIC4uLmdsb2JhbF0pKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVJld2luZChvcHQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSByZXdpbmRUYXJnZXQoKVxuICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlZCgpXG4gICAgY29uc3QgeyBlZGl0cyB9ID0gcmV3aW5kU3RhdHMoc3RhdGUsIHRhcmdldC5pbmRleClcbiAgICBjb25zdCBlZGl0c0xhYmVsID0gYCR7ZWRpdHMubGVuZ3RofSAke2VkaXRzLmxlbmd0aCA9PT0gMSA/ICdlZGl0JyA6ICdlZGl0cyd9YFxuICAgIGxldCByZXZlcnRlZCA9IFtdXG4gICAgbGV0IHNraXBwZWQgPSBbXVxuXG4gICAgaWYgKG9wdC5rZXkgPT09ICdib3RoJyB8fCBvcHQua2V5ID09PSAnY29kZScpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJldmVydEVkaXRzKGVkaXRzKVxuICAgICAgcmV2ZXJ0ZWQgPSByZXN1bHQucmV2ZXJ0ZWRcbiAgICAgIHNraXBwZWQgPSByZXN1bHQuc2tpcHBlZFxuICAgIH1cblxuICAgIGxldCBzdW1tYXJ5VGV4dCA9IG51bGxcbiAgICBpZiAob3B0LmtleSA9PT0gJ3N1bW1hcnknKSB7XG4gICAgICBjb25zdCB0YWlsID0gc3RhdGUudHJhbnNjcmlwdC5zbGljZSh0YXJnZXQuaW5kZXgpXG4gICAgICBjb25zdCB0ZXh0ID0gdGFpbC5maWx0ZXIoKG0pID0+IG0udGV4dCkubWFwKChtKSA9PiBgJHttLmtpbmR9OiAke20udGV4dH1gKS5qb2luKCdcXG4nKVxuICAgICAgZmxhc2goJ3N1bW1hcml6aW5nLi4uJylcbiAgICAgIHN1bW1hcnlUZXh0ID0gYXdhaXQgc3VtbWFyaXplVGV4dCh7IHRleHQsIG1vZGVsTmFtZTogbW9kZWwoKS5uYW1lIH0pLmNhdGNoKCgpID0+XG4gICAgICAgIHRhaWwuZmlsdGVyKChtKSA9PiBtLnRleHQpLnNsaWNlKDAsIDMpLm1hcCgobSkgPT4gbS50ZXh0LnNwbGl0KC9cXHMrLykuc2xpY2UoMCwgNikuam9pbignICcpKS5qb2luKCcgXHUwMEI3ICcpLFxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50ID0gbWFrZUV2ZW50KCdyZXdpbmQnLCB7IHRhcmdldDogdGFyZ2V0LmV2ZW50SWQsIG1vZGU6IG9wdC5rZXksIHN1bW1hcnlUZXh0LCByZXZlcnRlZCwgc2tpcHBlZCB9KVxuICAgIHBlcnNpc3QoZXZlbnQpXG4gICAgcmVmcy5yZXdpbmRVbmRvID0geyByZXdpbmRJZDogZXZlbnQuaWQsIGVkaXRzOiBlZGl0cy5maWx0ZXIoKGUpID0+IHJldmVydGVkLmluY2x1ZGVzKGUuY2FsbElkKSkgfVxuICAgIHJlRGVyaXZlKClcbiAgICBpZiAob3B0LmtleSAhPT0gJ2NvZGUnKSBzZXRJbnB1dChyZWNhbGxUZXh0KHRhcmdldCkpXG5cbiAgICBjb25zdCBza2lwcGVkTm90ZSA9IHNraXBwZWQubGVuZ3RoID8gYCBcdTAwQjcgc2tpcHBlZCAke3NraXBwZWQubGVuZ3RofSBkcmlmdGVkYCA6ICcnXG4gICAgaWYgKG9wdC5rZXkgPT09ICdjb2RlJykgZmxhc2goYHJldmVydGVkICR7ZWRpdHNMYWJlbH0sIGNvbnZlcnNhdGlvbiBrZXB0JHtza2lwcGVkTm90ZX0gXHUwMEI3IGN0cmwreiB0byB1bmRvYClcbiAgICBlbHNlIGlmIChvcHQua2V5ID09PSAnc3VtbWFyeScpIGZsYXNoKGByZXdvdW5kIGFuZCBzdW1tYXJpemVkJHtza2lwcGVkTm90ZX0gXHUwMEI3IGN0cmwreiB0byB1bmRvYClcbiAgICBlbHNlIGlmIChvcHQua2V5ID09PSAnYm90aCcpIGZsYXNoKGByZXdvdW5kLCAke2VkaXRzTGFiZWx9IHJldmVydGVkJHtza2lwcGVkTm90ZX0gXHUwMEI3IGN0cmwreiB0byB1bmRvYClcbiAgICBlbHNlIGZsYXNoKGByZXdvdW5kLCBmaWxlIGNoYW5nZXMga2VwdCBcdTAwQjcgY3RybCt6IHRvIHVuZG9gKVxuICAgIHNldFJld2luZFN0ZXAobnVsbClcbiAgICBzZXRSZXdpbmRUYXJnZXQobnVsbClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHVuZG9SZXdpbmQoKSB7XG4gICAgY29uc3QgdW5kbyA9IHJlZnMucmV3aW5kVW5kb1xuICAgIGlmICghdW5kbykgcmV0dXJuXG4gICAgY29uc3QgeyBza2lwcGVkIH0gPSBhd2FpdCByZWFwcGx5RWRpdHModW5kby5lZGl0cylcbiAgICBwZXJzaXN0KG1ha2VFdmVudCgncmV3aW5kX3VuZG8nLCB7IHJld2luZElkOiB1bmRvLnJld2luZElkIH0pKVxuICAgIHJlZnMucmV3aW5kVW5kbyA9IG51bGxcbiAgICByZURlcml2ZSgpXG4gICAgZmxhc2goc2tpcHBlZC5sZW5ndGggPyBgcmV3aW5kIHVuZG9uZSBcdTAwQjcgJHtza2lwcGVkLmxlbmd0aH0gZmlsZShzKSBkcmlmdGVkYCA6ICdyZXdpbmQgdW5kb25lJylcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlY2FsbFRleHQoZW50cnkpIHtcbiAgICByZXR1cm4gaW5wdXRUZXh0RnJvbUNvbnRlbnQoZW50cnkuY29udGVudCA/PyBlbnRyeS50ZXh0LCB7XG4gICAgICBhdHRhY2htZW50czogcmVmcy5hdHRhY2htZW50cyxcbiAgICAgIG5leHRJZDogKCkgPT4gKytyZWZzLmltYWdlQ291bnQsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGFueVBhbmVsID0gKCkgPT5cbiAgICBzaG93TW9kZWxQYW5lbCgpIHx8IHNob3dFZmZvcnRQYW5lbCgpIHx8IHNob3dUaGVtZVBhbmVsKCkgfHwgc2hvd0hpc3RvcnlQYW5lbCgpIHx8IHNob3dSZXN1bWVQYW5lbCgpIHx8IHNob3dNY3BQYW5lbCgpIHx8XG4gICAgc2hvd1Byb2plY3RQYW5lbCgpIHx8IHNob3dTaGVsbHNQYW5lbCgpIHx8IHNob3dXYWtldXBzUGFuZWwoKSB8fCBzaG93Q29ubmVjdFBhbmVsKCkgfHxcbiAgICBpbmZvUGFuZWwoKSAhPT0gbnVsbCB8fCByZXdpbmRTdGVwKCkgIT09IG51bGxcblxuICBmdW5jdGlvbiBraWxsU2hlbGwoc2hlbGwpIHtcbiAgICBpZiAoc2hlbGwuc3RhdHVzICE9PSAncnVubmluZycpIHJldHVybiBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0gYWxyZWFkeSBleGl0ZWRgKVxuICAgIGNvbnN0IGFybWVkID0gcmVmcy5zaGVsbEtpbGxBcm1cbiAgICBpZiAoIWFybWVkIHx8IGFybWVkLmlkICE9PSBzaGVsbC5pZCB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICByZWZzLnNoZWxsS2lsbEFybSA9IHsgaWQ6IHNoZWxsLmlkLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGsgYWdhaW4gdG8ga2lsbCBzaGVsbCAke3NoZWxsLmlkfWApXG4gICAgfVxuICAgIHJlZnMuc2hlbGxLaWxsQXJtID0gbnVsbFxuICAgIGJvb3Quc2hlbGxzLmtpbGwoc2hlbGwuaWQsICd1c2VyJylcbiAgfVxuXG4gIGNvbnN0IGVmZm9ydEFwcGxpZXMgPSAoKSA9PiAhIW1vZGVsKCkuZWZmb3J0XG5cbiAgZnVuY3Rpb24gc2V0U2Vzc2lvbkVmZm9ydChuZXh0LCB7IGFzRGVmYXVsdCA9IGZhbHNlIH0gPSB7fSkge1xuICAgIHBlcnNpc3QobWFrZUV2ZW50KCdlZmZvcnQnLCB7IHRvOiBuZXh0IH0pKVxuICAgIHNldEVmZm9ydChuZXh0KVxuICAgIGlmIChhc0RlZmF1bHQpIHtcbiAgICAgIHNldERlZmF1bHRFZmZvcnQobmV4dClcbiAgICAgIHdyaXRlQ29uZmlnKHsgZGVmYXVsdEVmZm9ydDogbmV4dCB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgICB9XG4gICAgZmxhc2goYGVmZm9ydDogJHtuZXh0ID8/ICdkZWZhdWx0J30ke2FzRGVmYXVsdCA/ICcgXHUwMEI3IHNhdmVkIGFzIGRlZmF1bHQnIDogJyd9YClcbiAgfVxuXG4gIGNvbnN0IGZtID0gdXNlRm9jdXMoeyBpbml0aWFsOiAnaW5wdXQnIH0pXG4gIGZtLml0ZW0oJ2ZlZWQnKVxuICBmbS5pdGVtKCdpbnB1dCcpXG4gIHVzZUZvY3VzVHJhcChhbnlQYW5lbCgpIHx8IHZpZXcoKSA9PT0gJ2hlbHAnKVxuICB1c2VTZWxlY3Rpb24oe1xuICAgIG9uQ29weTogKHRleHQpID0+IGZsYXNoKGBjb3BpZWQgJHt0ZXh0Lmxlbmd0aH0gJHt0ZXh0Lmxlbmd0aCA9PT0gMSA/ICdjaGFyYWN0ZXInIDogJ2NoYXJhY3RlcnMnfWApLFxuICB9KVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnICYmIGJ1c3koKSAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgaW50ZXJydXB0KClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnYycpIHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgICAgIGlmIChub3cgLSByZWZzLnF1aXRBdCA8IDE1MDApIHtcbiAgICAgICAgYm9vdC5zaGVsbHMua2lsbEFsbCgpXG4gICAgICAgIG1jcC5jbG9zZUFsbCgpLmNhdGNoKCgpID0+IHt9KS5maW5hbGx5KCgpID0+IHByb2Nlc3MuZXhpdCgwKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZnMucXVpdEF0ID0gbm93XG4gICAgICAgIGNvbnN0IHJ1bm5pbmcgPSBib290LnNoZWxscy5ydW5uaW5nKClcbiAgICAgICAgZmxhc2gocnVubmluZyA/IGAke3J1bm5pbmd9ICR7cnVubmluZyA9PT0gMSA/ICdzaGVsbCcgOiAnc2hlbGxzJ30gcnVubmluZyBcdTAwQjcgY3RybCtjIGFnYWluIHRvIGV4aXQgYW5kIGtpbGwgJHtydW5uaW5nID09PSAxID8gJ2l0JyA6ICd0aGVtJ31gIDogJ2N0cmwrYyBhZ2FpbiB0byBleGl0JylcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnbycpIHtcbiAgICAgIHNldFZlcmJvc2UoKHYpID0+ICF2KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdyJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgb3Blbkhpc3RvcnlTZWFyY2goKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgc2V0U2hvd1Jlc3VtZVBhbmVsKHRydWUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAndCcgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIHNldFNob3dNb2RlbFBhbmVsKHRydWUpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3AnICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBvcGVuUHJvamVjdFBhbmVsKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnYicgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIGlmICghZWZmb3J0QXBwbGllcygpKSBmbGFzaChgJHttb2RlbCgpLm5hbWV9IGRvZXMgbm90IHN1cHBvcnQgZWZmb3J0IGNvbnRyb2xgKVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gW251bGwsICdsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnbWF4J11cbiAgICAgICAgY29uc3QgbmV4dCA9IG9yZGVyWyhvcmRlci5pbmRleE9mKGVmZm9ydCgpID8/IG51bGwpICsgMSkgJSBvcmRlci5sZW5ndGhdXG4gICAgICAgIHNldFNlc3Npb25FZmZvcnQobmV4dClcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgc2hvd0hpc3RvcnlQYW5lbCgpKSB7XG4gICAgICBzd2l0Y2hIaXN0U2NvcGUoKGhpc3RTY29wZSgpICsgMSkgJSBISVNUT1JZX1NDT1BFUy5sZW5ndGgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnICYmIHNob3dSZXN1bWVQYW5lbCgpKSB7XG4gICAgICBjb25zdCBuZXh0ID0gKHJlc3VtZVNjb3BlKCkgKyAxKSAlIFJFU1VNRV9TQ09QRVMubGVuZ3RoXG4gICAgICBzZXRSZXN1bWVTY29wZShuZXh0KVxuICAgICAgcmVmcmVzaFNlc3Npb25zKG5leHQpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3onICYmIHJlZnMucmV3aW5kVW5kbyAmJiAhYnVzeSgpICYmIHZpZXcoKSA9PT0gJ2NoYXQnKSB7XG4gICAgICB1bmRvUmV3aW5kKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGVsYXBzZWQgPSBidXN5KCkgPyBNYXRoLm1heCgwLCBNYXRoLmZsb29yKChEYXRlLm5vdygpIC0gc3RhcnRlZEF0KCkpIC8gMTAwMCkpIDogMFxuXG4gIGNvbnN0IHNsYXNoUXVlcnkgPSBpbnB1dCgpLnN0YXJ0c1dpdGgoJy8nKSA/IGlucHV0KCkuc2xpY2UoMSkgOiBudWxsXG4gIGNvbnN0IHNob3dDb21tYW5kcyA9IHNsYXNoUXVlcnkgIT09IG51bGwgJiYgIXNsYXNoUXVlcnkuaW5jbHVkZXMoJyAnKSAmJiAhYW55UGFuZWwoKVxuICBjb25zdCBtYXRjaGVkQ29tbWFuZHMgPSAhc2hvd0NvbW1hbmRzXG4gICAgPyBbXVxuICAgIDogY21kQ3ljbGUoKVxuICAgICAgPyBjbWRDeWNsZSgpLm1hdGNoZXNcbiAgICAgIDogYWxsQ29tbWFuZHMuZmlsdGVyKChjKSA9PiBjLm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHNsYXNoUXVlcnkudG9Mb3dlckNhc2UoKSkpXG5cbiAgY29uc3QgYXRNYXRjaCA9IGlucHV0KCkubWF0Y2goLyhefFtcXHMoXSlAKFteXFxzQF0qKSQvKVxuICBjb25zdCBzaG93RmlsZXMgPSBhdE1hdGNoICE9PSBudWxsICYmICFzaG93Q29tbWFuZHMgJiYgIWZpbGVzRGlzbWlzc2VkKCkgJiYgIWFueVBhbmVsKClcbiAgaWYgKHNob3dGaWxlcykge1xuICAgIGxpc3RGaWxlcyhjd2QpLnRoZW4oKGZpbGVzKSA9PiB7XG4gICAgICBpZiAoZmlsZXMgIT09IGZpbGVMaXN0KCkpIHNldEZpbGVMaXN0KGZpbGVzKVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbWF0Y2hlZEZpbGVzID0gc2hvd0ZpbGVzXG4gICAgPyBmaWxlTGlzdCgpXG4gICAgICAgIC5tYXAoKGYpID0+IFtmdXp6eVNjb3JlKGF0TWF0Y2hbMl0sIGYpLCBmXSlcbiAgICAgICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICAgICAgICAubWFwKChbLCBmXSkgPT4gZilcbiAgICA6IFtdXG5cbiAgZnVuY3Rpb24gcGlja0ZpbGUoZikge1xuICAgIGNvbnN0IHYgPSBpbnB1dCgpXG4gICAgY29uc3QgYXQgPSB2Lmxhc3RJbmRleE9mKCdAJylcbiAgICBjb25zdCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVGb3IoZilcbiAgICBjb25zdCBmdWxsID0gam9pbihib290LmN3ZCwgZilcbiAgICBpZiAobWVkaWFUeXBlICYmIGV4aXN0c1N5bmMoZnVsbCkpIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHsrK3JlZnMuaW1hZ2VDb3VudH1dYFxuICAgICAgcmVmcy5hdHRhY2htZW50cy5zZXQocGxhY2Vob2xkZXIsIHsgcGF0aDogZnVsbCwgbWVkaWFUeXBlIH0pXG4gICAgICBzZXRJbnB1dCh2LnNsaWNlKDAsIGF0KSArIHBsYWNlaG9sZGVyICsgJyAnKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRJbnB1dCh2LnNsaWNlKDAsIGF0ICsgMSkgKyBmICsgJyAnKVxuICAgIH1cbiAgICBzZXRGaWxlSW5kZXgoMClcbiAgfVxuXG4gIGNvbnN0IGNvbXBDdHggPSBjb21wbGV0aW5nKCkgPyBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlOiBpbnB1dCgpLCByZXNvbHZlOiBjb21wbGV0aW9uU291cmNlIH0pIDogbnVsbFxuICBjb25zdCBzaG93Q29tcGxldGlvbiA9ICEhY29tcEN0eCAmJiBjb21wQ3R4Lm1hdGNoZXMubGVuZ3RoID4gMCAmJiAhc2hvd0NvbW1hbmRzICYmICFzaG93RmlsZXMgJiYgIWFueVBhbmVsKClcblxuICBjb25zdCByZXdpbmRFbnRyaWVzID0gKCkgPT4gdXNlckVudHJpZXMoZGVyaXZlZCgpKVxuICBjb25zdCByZXdpbmRPcHRpb25zID0gKCgpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSByZXdpbmRUYXJnZXQoKVxuICAgIGlmICghdGFyZ2V0KSByZXR1cm4gW11cbiAgICBjb25zdCB7IG1zZ3MsIGVkaXRzIH0gPSByZXdpbmRTdGF0cyhkZXJpdmVkKCksIHRhcmdldC5pbmRleClcbiAgICBjb25zdCBlID0gZWRpdHMubGVuZ3RoXG4gICAgY29uc3QgZWRpdHNMYWJlbCA9IGAke2V9ICR7ZSA9PT0gMSA/ICdlZGl0JyA6ICdlZGl0cyd9YFxuICAgIGNvbnN0IG9wdHMgPSBbXVxuICAgIGlmIChlID4gMCkgb3B0cy5wdXNoKHsga2V5OiAnYm90aCcsIGxhYmVsOiAncmVzdG9yZSBjb2RlIGFuZCBjb252ZXJzYXRpb24nLCBkZXNjOiBgY2hhdCByZXR1cm5zIHRvIHRoaXMgbWVzc2FnZSBcdTAwQjcgJHtlZGl0c0xhYmVsfSByZXZlcnRlZGAgfSlcbiAgICBvcHRzLnB1c2goe1xuICAgICAga2V5OiAnY2hhdCcsXG4gICAgICBsYWJlbDogZSA+IDAgPyAncmVzdG9yZSBjb252ZXJzYXRpb24gb25seScgOiAncmVzdG9yZSBjb252ZXJzYXRpb24nLFxuICAgICAgZGVzYzogZSA+IDAgPyAnY2hhdCByZXR1cm5zIHRvIHRoaXMgbWVzc2FnZSBcdTAwQjcgZmlsZSBjaGFuZ2VzIGtlcHQnIDogYGNoYXQgcmV0dXJucyB0byB0aGlzIG1lc3NhZ2UgXHUwMEI3IGRyb3BzICR7bXNnc30gZW50cmllc2AsXG4gICAgfSlcbiAgICBpZiAoZSA+IDApIG9wdHMucHVzaCh7IGtleTogJ2NvZGUnLCBsYWJlbDogJ3Jlc3RvcmUgY29kZSBvbmx5JywgZGVzYzogYGNvbnZlcnNhdGlvbiBrZXB0IFx1MDBCNyAke2VkaXRzTGFiZWx9IHJldmVydGVkYCB9KVxuICAgIG9wdHMucHVzaCh7IGtleTogJ3N1bW1hcnknLCBsYWJlbDogJ3Jld2luZCBhbmQga2VlcCBhIHN1bW1hcnknLCBkZXNjOiAnZHJvcHBlZCBlbnRyaWVzIGNvbGxhcHNlIGludG8gYSBvbmUtbGluZSBub3RlJyB9KVxuICAgIHJldHVybiBvcHRzXG4gIH0pKClcblxuICBjb25zdCB7IHVzYWdlQWN0aXZlOiB1c2FnZSB9ID0gZGVyaXZlZCgpXG4gIHNoZWxsc1ZlcnNpb24oKVxuICBjb25zdCBydW5uaW5nU2hlbGxzID0gYm9vdC5zaGVsbHMucnVubmluZygpXG4gIGNvbnN0IHBlbmRpbmdXYWtldXBzID0gYm9vdC53YWtldXBzLnBlbmRpbmcoKVxuXG4gIGlmICh2aWV3KCkgPT09ICdoZWxwJykge1xuICAgIHJldHVybiA8SGVscCBjb21tYW5kcz17Q09NTUFORFN9IG9uQ2xvc2U9eygpID0+IHNldFZpZXcoJ2NoYXQnKX0gLz5cbiAgfVxuXG4gIGhpZ2hsaWdodFZlcnNpb24oKVxuXG4gIGNvbnN0IGl0ZW1zID0gWy4uLmRlcml2ZWQoKS50cmFuc2NyaXB0LCAuLi5vdmVybGF5KCldXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6ICcxMDAlJyB9fT5cbiAgICAgIDxTY3JvbGxCb3hcbiAgICAgICAgc3R5bGU9e3sgZmxleEdyb3c6IDEgfX1cbiAgICAgICAgZm9jdXNlZD17Zm0uaXMoJ2ZlZWQnKX1cbiAgICAgICAgc2Nyb2xsT2Zmc2V0PXtmb2xsb3coKSA/IDFlOSA6IG9mZnNldCgpfVxuICAgICAgICBvblNjcm9sbD17KG5leHQsIG1ldGEpID0+IHsgc2V0Rm9sbG93KCEhbWV0YT8uYXRCb3R0b20pOyBzZXRPZmZzZXQobmV4dCkgfX1cbiAgICAgICAgc2Nyb2xsYmFyXG4gICAgICA+XG4gICAgICAgIHtpdGVtcy5sZW5ndGggPT09IDAgJiYgPEJhbm5lciB2ZXJzaW9uPXt2ZXJzaW9ufSBjd2Q9e2Jvb3QuZGlzcGxheUN3ZH0gbW9kZWxOYW1lPXttb2RlbCgpLm5hbWV9IC8+fVxuICAgICAgICB7aXRlbXMubWFwKChpdGVtLCBpKSA9PiA8TWVzc2FnZSBrZXk9e2l9IGl0ZW09e2l0ZW19IHZlcmJvc2U9e3ZlcmJvc2UoKX0gLz4pfVxuICAgICAgICB7c3RyZWFtaW5nKCkgIT09IG51bGwgJiYgc3RyZWFtaW5nKCkgIT09ICcnICYmIChcbiAgICAgICAgICA8TWVzc2FnZSBrZXk9XCJzdHJlYW1pbmdcIiBpdGVtPXt7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0OiBgJHtzdHJlYW1pbmcoKX1cdTI1OEJgIH19IC8+XG4gICAgICAgICl9XG4gICAgICA8L1Njcm9sbEJveD5cblxuICAgICAge3F1ZXVlZCgpLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHtxdWV1ZWQoKS5tYXAoKHEsIGkpID0+IChcbiAgICAgICAgICAgIDxib3gga2V5PXtpfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnXHUyMDNBICd9PC90ZXh0PlxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBNVVRFRCB9fT57cS5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICB7aSA9PT0gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQsIGRpbTogdHJ1ZSB9fT57JyAgcGVuZGluZyBcdTAwQjcgXHUyMTkxIHRvIGVkaXQnfTwvdGV4dD59XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuXG4gICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgZmxleERpcmVjdGlvbjogJ3JvdycsIHBhZGRpbmdYOiAyLCBwYWRkaW5nWTogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCksIGJvbGQ6IHRydWUgfX0+eydcdTI3NkYnfTwvdGV4dD5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAge2Rlcml2ZWQoKS50aXRsZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBwb3NpdGlvbjogJ2Fic29sdXRlJywgdG9wOiAwLCByaWdodDogMCB9fT5cbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGJnOiBhY2NlbnQoKSwgY29sb3I6ICdibGFjaycsIGJvbGQ6IHRydWUgfX0+e2AgJHtkZXJpdmVkKCkudGl0bGV9IGB9PC90ZXh0PlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgICA8VGV4dEFyZWFcbiAgICAgICAgICBjb2xvcj17Rkd9XG4gICAgICAgICAgdmFsdWU9e2lucHV0KCl9XG4gICAgICAgICAgb25DaGFuZ2U9eyh2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb252ZXJ0ZWQgPSBwbGFjZWhvbGRlcml6ZUltYWdlUGF0aHModiwge1xuICAgICAgICAgICAgICBhdHRhY2htZW50czogcmVmcy5hdHRhY2htZW50cyxcbiAgICAgICAgICAgICAgbmV4dElkOiAoKSA9PiArK3JlZnMuaW1hZ2VDb3VudCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBzZXRJbnB1dChjb252ZXJ0ZWQudGV4dClcbiAgICAgICAgICAgIHNldENtZEluZGV4KDApXG4gICAgICAgICAgICBzZXRDbWRDeWNsZShudWxsKVxuICAgICAgICAgICAgc2V0RmlsZUluZGV4KDApXG4gICAgICAgICAgICBzZXRIaXN0SWR4KC0xKVxuICAgICAgICAgICAgc2V0RmlsZXNEaXNtaXNzZWQoZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNhbmNlbD17KCkgPT4geyBpZiAoYnVzeSgpKSBpbnRlcnJ1cHQoKTsgZWxzZSB7IHNldElucHV0KCcnKTsgc2V0Q21kQ3ljbGUobnVsbCkgfSB9fVxuICAgICAgICAgIG9uU3VibWl0PXtzZW5kfVxuICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3RhYicgJiYgIWUuY3RybCAmJiAhZS5tZXRhICYmIHNob3dDb21tYW5kcyAmJiBtYXRjaGVkQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBjb25zdCBjeWNsZSA9IGNtZEN5Y2xlKClcbiAgICAgICAgICAgICAgaWYgKCFjeWNsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5taW4oY21kSW5kZXgoKSwgbWF0Y2hlZENvbW1hbmRzLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgc2V0Q21kQ3ljbGUoeyBtYXRjaGVzOiBtYXRjaGVkQ29tbWFuZHMgfSlcbiAgICAgICAgICAgICAgICBzZXRDbWRJbmRleChzdGFydClcbiAgICAgICAgICAgICAgICBzZXRJbnB1dCgnLycgKyBtYXRjaGVkQ29tbWFuZHNbc3RhcnRdLm5hbWUpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IChjbWRJbmRleCgpICsgMSkgJSBjeWNsZS5tYXRjaGVzLmxlbmd0aFxuICAgICAgICAgICAgICAgIHNldENtZEluZGV4KG5leHQpXG4gICAgICAgICAgICAgICAgc2V0SW5wdXQoJy8nICsgY3ljbGUubWF0Y2hlc1tuZXh0XS5uYW1lKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdwYXN0ZScgJiYgZS50ZXh0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGhzID0gZXh0cmFjdEltYWdlUGF0aHMoZS50ZXh0KVxuICAgICAgICAgICAgICBpZiAocGF0aHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVycyA9IHBhdGhzLm1hcCgocGF0aCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBgW0ltYWdlICMkeysrcmVmcy5pbWFnZUNvdW50fV1gXG4gICAgICAgICAgICAgICAgICByZWZzLmF0dGFjaG1lbnRzLnNldChwbGFjZWhvbGRlciwgeyBwYXRoLCBtZWRpYVR5cGU6IG1lZGlhVHlwZUZvcihwYXRoKSB9KVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBjb25zdCBhdCA9IGUuY3Vyc29yID8/IGUudmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgc2V0SW5wdXQoZS52YWx1ZS5zbGljZSgwLCBhdCkgKyBwbGFjZWhvbGRlcnMuam9pbignICcpICsgZS52YWx1ZS5zbGljZShhdCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ2JhY2tzcGFjZScgJiYgZS5jdXJzb3IgPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gZS52YWx1ZS5zbGljZSgwLCBlLmN1cnNvcikubWF0Y2goL1xcW0ltYWdlICNcXGQrXFxdJC8pXG4gICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJlZnMuYXR0YWNobWVudHMuZGVsZXRlKG1hdGNoWzBdKVxuICAgICAgICAgICAgICAgIHNldElucHV0KGUudmFsdWUuc2xpY2UoMCwgZS5jdXJzb3IgLSBtYXRjaFswXS5sZW5ndGgpICsgZS52YWx1ZS5zbGljZShlLmN1cnNvcikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndGFiJyAmJiAhZS5jdHJsICYmICFlLm1ldGEpIHtcbiAgICAgICAgICAgICAgY29uc3QgY3R4ID0gY29tcGxldGlvbkNvbnRleHQoeyB2YWx1ZTogZS52YWx1ZSwgcmVzb2x2ZTogY29tcGxldGlvblNvdXJjZSB9KVxuICAgICAgICAgICAgICBpZiAoIWN0eCkgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICAgIGlmICghY29tcGxldGluZygpKSB7XG4gICAgICAgICAgICAgICAgc2V0Q29tcGxldGluZyh0cnVlKVxuICAgICAgICAgICAgICAgIHNldENvbXBJbmRleCgwKVxuICAgICAgICAgICAgICAgIGxpc3RGaWxlcyhjd2QpLnRoZW4oKGZpbGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZmlsZXMgIT09IGZpbGVMaXN0KCkpIHNldEZpbGVMaXN0KGZpbGVzKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3R4Lm1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGFjY2VwdENvbXBsZXRpb24oZS52YWx1ZSwgY3R4LCBjdHgubWF0Y2hlc1tNYXRoLm1pbihjb21wSW5kZXgoKSwgY3R4Lm1hdGNoZXMubGVuZ3RoIC0gMSldKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5jdHJsIHx8IGUubWV0YSB8fCBzaG93Q29tbWFuZHMgfHwgc2hvd0ZpbGVzKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3VwJyAmJiBlLnZhbHVlID09PSAnJyAmJiBxdWV1ZWQoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHNldElucHV0KHF1ZXVlZCgpLmpvaW4oJ1xcbicpKVxuICAgICAgICAgICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBicm93c2luZyA9IGhpc3RJZHgoKSA+PSAwXG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd1cCcgJiYgKGJyb3dzaW5nIHx8IGUudmFsdWUgPT09ICcnKSAmJiBoaXN0SWR4KCkgPCBzZW50KCkubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICBjb25zdCBuID0gaGlzdElkeCgpICsgMVxuICAgICAgICAgICAgICBzZXRIaXN0SWR4KG4pXG4gICAgICAgICAgICAgIHNldElucHV0KHNlbnQoKVtzZW50KCkubGVuZ3RoIC0gMSAtIG5dLnRleHQpXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdkb3duJyAmJiBicm93c2luZykge1xuICAgICAgICAgICAgICBjb25zdCBuID0gaGlzdElkeCgpIC0gMVxuICAgICAgICAgICAgICBzZXRIaXN0SWR4KG4pXG4gICAgICAgICAgICAgIHNldElucHV0KG4gPCAwID8gJycgOiBzZW50KClbc2VudCgpLmxlbmd0aCAtIDEgLSBuXS50ZXh0KVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfX1cbiAgICAgICAgICBzdWJtaXRPbkVudGVyXG4gICAgICAgICAgY2xlYXJPblN1Ym1pdFxuICAgICAgICAgIGZvY3VzZWQ9e2ZtLmlzKCdpbnB1dCcpICYmICFhbnlQYW5lbCgpfVxuICAgICAgICAgIG1heEhlaWdodD17OH1cbiAgICAgICAgICBwbGFjZWhvbGRlcj1cImVudGVyIHRvIHNlbmQgXHUwMEI3IC8gY29tbWFuZHMgXHUwMEI3IEAgZmlsZXMgXHUwMEI3IHRhYiB0byBzY3JvbGxcIlxuICAgICAgICAgIGN1cnNvcj17eyBibGluazogdHJ1ZSwgYmc6IGFjY2VudCgpLCBjb2xvcjogJ2JsYWNrJyB9fVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG5cbiAgICAgIHtzaG93Q29tbWFuZHMgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHttYXRjaGVkQ29tbWFuZHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIG1hdGNoaW5nIGNvbW1hbmRzPC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgIGl0ZW1zPXttYXRjaGVkQ29tbWFuZHN9XG4gICAgICAgICAgICAgIHNlbGVjdGVkPXtjbWRJbmRleCgpfVxuICAgICAgICAgICAgICBvblNlbGVjdD17c2V0Q21kSW5kZXh9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXsoYykgPT4gcnVuQ29tbWFuZChjKX1cbiAgICAgICAgICAgICAgZm9jdXNlZD17c2hvd0NvbW1hbmRzfVxuICAgICAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgICAgICBzY3JvbGxvZmY9ezJ9XG4gICAgICAgICAgICAgIHJlbmRlckl0ZW09eyhjLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBNVVRFRCB9fT57YC8ke2MubmFtZX1gLnBhZEVuZCgxMil9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/ICcjY2JkNWUxJyA6IEZBSU5UIH19PntjLmRlc2N9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93RmlsZXMgJiYgbWF0Y2hlZEZpbGVzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17bWF0Y2hlZEZpbGVzfVxuICAgICAgICAgICAgc2VsZWN0ZWQ9e2ZpbGVJbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEZpbGVJbmRleH1cbiAgICAgICAgICAgIG9uU3VibWl0PXtwaWNrRmlsZX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiBzZXRGaWxlc0Rpc21pc3NlZCh0cnVlKX1cbiAgICAgICAgICAgIGZvY3VzZWQ9e3Nob3dGaWxlc31cbiAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICBzY3JvbGxvZmY9ezJ9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsoZiwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkdfU09GVCB9fT57Zn08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93Q29tcGxldGlvbiAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXtjb21wQ3R4Lm1hdGNoZXN9XG4gICAgICAgICAgICBzZWxlY3RlZD17Y29tcEluZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0Q29tcEluZGV4fVxuICAgICAgICAgICAgb25TdWJtaXQ9eyhjYW5kaWRhdGUpID0+IGFjY2VwdENvbXBsZXRpb24oaW5wdXQoKSwgY29tcEN0eCwgY2FuZGlkYXRlKX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtkaXNtaXNzQ29tcGxldGlvbn1cbiAgICAgICAgICAgIGZvY3VzZWQ9e3Nob3dDb21wbGV0aW9ufVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhjYW5kaWRhdGUsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHX1NPRlQgfX0+e2NhbmRpZGF0ZX08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93TW9kZWxQYW5lbCgpICYmIChcbiAgICAgICAgPE1vZGVsUGFuZWxcbiAgICAgICAgICBtb2RlbHM9e21vZGVsc31cbiAgICAgICAgICBjdXJyZW50PXttb2RlbCgpLm5hbWV9XG4gICAgICAgICAgZGVmYXVsdE5hbWU9e2RlZmF1bHRNb2RlbCgpLm5hbWV9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd01vZGVsUGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhtKSA9PiB7XG4gICAgICAgICAgICBpZiAobS5hdmFpbGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmxhc2goYHNldCAke20ua2V5SGludH0gaW4geW91ciBlbnZpcm9ubWVudCB0byB1c2UgJHttLm5hbWV9YClcbiAgICAgICAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdtb2RlbF9zd2l0Y2gnLCB7IGZyb206IG1vZGVsKCkubmFtZSwgdG86IG0ubmFtZSB9KSlcbiAgICAgICAgICAgIHNldE1vZGVsKG0pXG4gICAgICAgICAgICBzZXRTaG93TW9kZWxQYW5lbChmYWxzZSlcbiAgICAgICAgICAgIGZsYXNoKGBtb2RlbCBzZXQgdG8gJHttLm5hbWV9YClcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uUGlja0RlZmF1bHQ9eyhtKSA9PiB7XG4gICAgICAgICAgICBpZiAobS5hdmFpbGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmxhc2goYHNldCAke20ua2V5SGludH0gaW4geW91ciBlbnZpcm9ubWVudCB0byB1c2UgJHttLm5hbWV9YClcbiAgICAgICAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdtb2RlbF9zd2l0Y2gnLCB7IGZyb206IG1vZGVsKCkubmFtZSwgdG86IG0ubmFtZSB9KSlcbiAgICAgICAgICAgIHNldE1vZGVsKG0pXG4gICAgICAgICAgICBzZXREZWZhdWx0TW9kZWwobSlcbiAgICAgICAgICAgIHdyaXRlQ29uZmlnKHsgZGVmYXVsdE1vZGVsOiBtLm5hbWUgfSkuY2F0Y2goKCkgPT4ge30pXG4gICAgICAgICAgICBzZXRTaG93TW9kZWxQYW5lbChmYWxzZSlcbiAgICAgICAgICAgIGZsYXNoKGBtb2RlbCBzZXQgdG8gJHttLm5hbWV9IFx1MDBCNyBzYXZlZCBhcyBkZWZhdWx0YClcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93RWZmb3J0UGFuZWwoKSAmJiAoXG4gICAgICAgIDxFZmZvcnRQYW5lbFxuICAgICAgICAgIGxldmVscz17RUZGT1JUX0xFVkVMU31cbiAgICAgICAgICBjdXJyZW50PXtlZmZvcnQoKSA/PyBudWxsfVxuICAgICAgICAgIGRlZmF1bHRMZXZlbD17ZGVmYXVsdEVmZm9ydCgpID8/IG51bGx9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd0VmZm9ydFBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsobCkgPT4ge1xuICAgICAgICAgICAgc2V0U2Vzc2lvbkVmZm9ydChsLmtleSlcbiAgICAgICAgICAgIHNldFNob3dFZmZvcnRQYW5lbChmYWxzZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uUGlja0RlZmF1bHQ9eyhsKSA9PiB7XG4gICAgICAgICAgICBzZXRTZXNzaW9uRWZmb3J0KGwua2V5LCB7IGFzRGVmYXVsdDogdHJ1ZSB9KVxuICAgICAgICAgICAgc2V0U2hvd0VmZm9ydFBhbmVsKGZhbHNlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0VmZm9ydFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93VGhlbWVQYW5lbCgpICYmIChcbiAgICAgICAgPFRoZW1lUGFuZWxcbiAgICAgICAgICB0aGVtZXM9e3RoZW1lSXRlbXMoKX1cbiAgICAgICAgICBwcmVmPXt0aGVtZVByZWYoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93VGhlbWVQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KHQpID0+IHtcbiAgICAgICAgICAgIHNldFNob3dUaGVtZVBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgYXBwbHlUaGVtZVByZWYodC5rZXkpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblByZXZpZXc9eyh0KSA9PiBwcmV2aWV3UGFsZXR0ZSh0LmtleSl9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1RoZW1lUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICBwcmV2aWV3UGFsZXR0ZSh0aGVtZVByZWYoKSlcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dIaXN0b3J5UGFuZWwoKSAmJiAoXG4gICAgICAgIDxIaXN0b3J5UGFuZWxcbiAgICAgICAgICBwcm9tcHRzPXtoaXN0UHJvbXB0cygpfVxuICAgICAgICAgIHNjb3Blcz17SElTVE9SWV9TQ09QRVN9XG4gICAgICAgICAgc2NvcGVJbmRleD17aGlzdFNjb3BlKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd0hpc3RvcnlQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KHRleHQpID0+IHsgc2V0SW5wdXQodGV4dCk7IHNldFNob3dIaXN0b3J5UGFuZWwoZmFsc2UpIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0hpc3RvcnlQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Jlc3VtZVBhbmVsKCkgJiYgKFxuICAgICAgICA8UmVzdW1lUGFuZWxcbiAgICAgICAgICBzZXNzaW9ucz17cmVzdW1lU2Vzc2lvbnMoKX1cbiAgICAgICAgICBzY29wZXM9e1JFU1VNRV9TQ09QRVN9XG4gICAgICAgICAgc2NvcGVJbmRleD17cmVzdW1lU2NvcGUoKX1cbiAgICAgICAgICBsb2FkaW5nPXtyZXN1bWVMb2FkaW5nKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1Jlc3VtZVBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXtyZXN1bWVTZXNzaW9ufVxuICAgICAgICAgIG9uRGVsZXRlPXtkZWxldGVTZXNzaW9uTWV0YX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UmVzdW1lUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge2luZm9QYW5lbCgpICYmIChcbiAgICAgICAgPEluZm9MaXN0UGFuZWxcbiAgICAgICAgICB0aXRsZT17aW5mb1BhbmVsKCkudGl0bGV9XG4gICAgICAgICAgcm93cz17aW5mb1BhbmVsKCkucm93c31cbiAgICAgICAgICBmb2N1c2VkPXtpbmZvUGFuZWwoKSAhPT0gbnVsbH1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJbmZvUGFuZWwobnVsbCl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Byb2plY3RQYW5lbCgpICYmIChcbiAgICAgICAgPFByb2plY3RQYW5lbFxuICAgICAgICAgIHByb2plY3RzPXtwcm9qZWN0cygpfVxuICAgICAgICAgIGxvYWRpbmc9e3Byb2plY3RzTG9hZGluZygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dQcm9qZWN0UGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhwKSA9PiByZXN1bWVTZXNzaW9uKHAubGF0ZXN0KX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UHJvamVjdFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2hlbGxzUGFuZWwoKSAmJiAoXG4gICAgICAgIDxTaGVsbHNQYW5lbFxuICAgICAgICAgIHZlcnNpb249e3NoZWxsc1ZlcnNpb24oKX1cbiAgICAgICAgICBzaGVsbHM9e2Jvb3Quc2hlbGxzLmxpc3QoKX1cbiAgICAgICAgICByZWFkT3V0cHV0PXsoaWQpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBib290LnNoZWxscy5vdXRwdXQoaWQsIHsgdGFpbDogMjAwMCB9KVxuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93U2hlbGxzUGFuZWwoKX1cbiAgICAgICAgICBvbktpbGw9e2tpbGxTaGVsbH1cbiAgICAgICAgICBvbkRpc21pc3M9eyhzKSA9PiBib290LnNoZWxscy5kaXNtaXNzKHMuaWQpfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dTaGVsbHNQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0Nvbm5lY3RQYW5lbCgpICYmIChcbiAgICAgICAgPENvbm5lY3RQYW5lbFxuICAgICAgICAgIHByb3ZpZGVycz17YXV0aFByb3ZpZGVycygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dDb25uZWN0UGFuZWwoKX1cbiAgICAgICAgICBvbkNvbm5lY3Q9e2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkRpc2Nvbm5lY3Q9e2Rpc2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Q29ubmVjdFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93V2FrZXVwc1BhbmVsKCkgJiYgKFxuICAgICAgICA8V2FrZXVwc1BhbmVsXG4gICAgICAgICAgd2FrZXVwcz17KHNoZWxsc1ZlcnNpb24oKSwgYm9vdC53YWtldXBzLmxpc3QoKSl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1dha2V1cHNQYW5lbCgpfVxuICAgICAgICAgIG9uQ2FuY2VsPXsodykgPT4ge1xuICAgICAgICAgICAgYm9vdC53YWtldXBzLmNhbmNlbCh3LmlkKVxuICAgICAgICAgICAgZmxhc2goYGNhbmNlbGxlZCB3YWtlLXVwICR7dy5pZH1gKVxuICAgICAgICAgICAgbm90ZVN5c3RlbShcbiAgICAgICAgICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSB0aGUgdXNlciBjYW5jZWxsZWQgc2NoZWR1bGVkIHdha2UtdXAgJHt3LmlkfSAobm90ZSB3YXM6ICR7dy5ub3RlLnJlcGxhY2UoL1xcbi9nLCAnICcpfSkuIFRoaXMgd2FzIGRlbGliZXJhdGU7IGRvIG5vdCByZXNjaGVkdWxlIGl0IHVubGVzcyBhc2tlZC5gLFxuICAgICAgICAgICAgICB7IHdha2U6IGZhbHNlIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93V2FrZXVwc1BhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93TWNwUGFuZWwoKSAmJiAoXG4gICAgICAgIDxNY3BQYW5lbFxuICAgICAgICAgIHNlcnZlcnM9e21jcFNlcnZlcnMoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93TWNwUGFuZWwoKX1cbiAgICAgICAgICBvblRvZ2dsZT17KG5hbWUpID0+IG1jcC50b2dnbGUobmFtZSl9XG4gICAgICAgICAgb25SZWNvbm5lY3Q9eyhuYW1lKSA9PiBtY3AucmVjb25uZWN0KG5hbWUpfVxuICAgICAgICAgIG9uUmVtb3ZlPXsobmFtZSkgPT4gbWNwLnJlbW92ZShuYW1lKX1cbiAgICAgICAgICBvbkFkZD17KG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgICAgICAgICBtY3AuYWRkKG5hbWUsIGNvbW1hbmQsIHNjb3BlKVxuICAgICAgICAgICAgZmxhc2goYGFkZGVkICR7bmFtZX0gKCR7c2NvcGV9KWApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkludmFsaWQ9e2ZsYXNofVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNY3BQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7cmV3aW5kU3RlcCgpID09PSAncGljaycgJiYgKFxuICAgICAgICA8UmV3aW5kUGlja1BhbmVsXG4gICAgICAgICAgZW50cmllcz17Wy4uLnJld2luZEVudHJpZXMoKV0ucmV2ZXJzZSgpfVxuICAgICAgICAgIHN0YXRzPXsoaW5kZXgpID0+IHJld2luZFN0YXRzKGRlcml2ZWQoKSwgaW5kZXgpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Jld2luZFN0ZXAoKSA9PT0gJ3BpY2snfVxuICAgICAgICAgIG9uUGljaz17KGVudHJ5KSA9PiB7IHNldFJld2luZFRhcmdldChlbnRyeSk7IHNldFJld2luZFN0ZXAoJ2FjdGlvbicpIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0UmV3aW5kU3RlcChudWxsKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtyZXdpbmRTdGVwKCkgPT09ICdhY3Rpb24nICYmIHJld2luZFRhcmdldCgpICYmIChcbiAgICAgICAgPFJld2luZEFjdGlvblBhbmVsXG4gICAgICAgICAgdGFyZ2V0PXtyZXdpbmRUYXJnZXQoKX1cbiAgICAgICAgICBvcHRpb25zPXtyZXdpbmRPcHRpb25zfVxuICAgICAgICAgIGZvY3VzZWQ9e3Jld2luZFN0ZXAoKSA9PT0gJ2FjdGlvbid9XG4gICAgICAgICAgb25TdWJtaXQ9e3BlcmZvcm1SZXdpbmR9XG4gICAgICAgICAgb25CYWNrPXsoKSA9PiBzZXRSZXdpbmRTdGVwKCdwaWNrJyl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBwYWRkaW5nWDogMiwgZ2FwOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHtidXN5KClcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDxTaGltbWVyIGNvbG9yPXthY2NlbnQoKX0gaGlnaGxpZ2h0PXtISUdITElHSFR9IGR1cmF0aW9uPXsxNTAwfSByZXZlcnNlPlxuICAgICAgICAgICAgICAgIHtjb21wYWN0aW5nKClcbiAgICAgICAgICAgICAgICAgID8gY29tcGFjdFN0YXR1cygpPy5waGFzZSA9PT0gJ3dyaXRpbmcnID8gYENvbXBhY3RpbmcgXHUwMEI3IHdyaXRpbmcgJHtjb21wYWN0U3RhdHVzKCkuc2VjdGlvbn0vOGAgOiAnQ29tcGFjdGluZyBcdTAwQjcgYW5hbHl6aW5nJ1xuICAgICAgICAgICAgICAgICAgOiB0aGlua2luZ05vdygpID8gJ1RoaW5raW5nJyA6ICdSZXNwb25kaW5nJ31cbiAgICAgICAgICAgICAgPC9TaGltbWVyPlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgKCR7ZWxhcHNlZH1zJHtjb21wYWN0U3RhdHVzKCkgPyBgIFx1MDBCNyBcdTIxOTMgJHtmbXRUb2tlbnMoTWF0aC5yb3VuZChjb21wYWN0U3RhdHVzKCkuY2hhcnMgLyA0KSl9IHRva2Vuc2AgOiAnJ30pIFx1MDBCNyBlc2MgdG8gaW50ZXJydXB0YH08L3RleHQ+XG4gICAgICAgICAgICAgIHtjb21wYWN0U3RhdHVzKCk/LnBoYXNlID09PSAnd3JpdGluZycgJiYgKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIG1hcmdpbkxlZnQ6IDEsIHdpZHRoOiAxNiB9fT5cbiAgICAgICAgICAgICAgICAgIDxQcm9ncmVzc0JhciB2YXJpYW50PVwidGhpblwiIHZhbHVlPXtjb21wYWN0U3RhdHVzKCkuc2VjdGlvbiAvIDh9IHdpZHRoPXsxNn0gcGVyY2VudGFnZT17ZmFsc2V9IGNvbG9yPXthY2NlbnQoKX0gLz5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgIClcbiAgICAgICAgICA6IDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2Jvb3QuZGlzcGxheUN3ZH08L3RleHQ+fVxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgIHtydW5uaW5nU2hlbGxzID4gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2BcdTI2OTkgJHtydW5uaW5nU2hlbGxzfWB9PC90ZXh0Pn1cbiAgICAgICAge3BlbmRpbmdXYWtldXBzID4gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2BcdTIzRjAgJHtwZW5kaW5nV2FrZXVwc31gfTwvdGV4dD59XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57bW9kZWwoKS5uYW1lfTwvdGV4dD5cbiAgICAgICAge2VmZm9ydEFwcGxpZXMoKSAmJiBlZmZvcnQoKSAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2BcdTAwQjcgJHtlZmZvcnQoKX1gfTwvdGV4dD59XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5cdTIxOTE8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCR7dXNhZ2UucHJvbXB0VG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IGluYH08L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5cdTIxOTM8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCR7dXNhZ2UuY29tcGxldGlvblRva2Vucy50b0xvY2FsZVN0cmluZygpfSBvdXRgfTwvdGV4dD5cbiAgICAgICAge3VzYWdlLnRob3VnaHRUb2tlbnMgPiAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YFx1MjcyNiAke3VzYWdlLnRob3VnaHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gdGhpbmtgfTwvdGV4dD59XG4gICAgICAgIHttb2RlbCgpLmNvbnRleHQgPiAwICYmIGRlcml2ZWQoKS5sYXN0UHJvbXB0VG9rZW5zID4gMCAmJiBkZXJpdmVkKCkubGFzdFByb21wdE1vZGVsID09PSBtb2RlbCgpLm5hbWUgJiYgKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBwY3QgPSBNYXRoLm1pbigxMDAsIE1hdGgucm91bmQoKGRlcml2ZWQoKS5sYXN0UHJvbXB0VG9rZW5zIC8gbW9kZWwoKS5jb250ZXh0KSAqIDEwMCkpXG4gICAgICAgICAgcmV0dXJuIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBwY3QgPj0gODAgPyBSRUQgOiBNVVRFRCB9fT57YGN0eCAke3BjdH0lYH08L3RleHQ+XG4gICAgICAgIH0pKCl9XG4gICAgICA8L2JveD5cbiAgICA8L2JveD5cbiAgKVxufVxuIiwgImltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlLCByZWFkZGlyIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgcHJvamVjdERpciwgcHJvamVjdEhpc3RvcnlGaWxlLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5jb25zdCBNQVhfUFJPTVBUU19QRVJfU0NPUEUgPSAxMDAwXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBlbmRQcm9tcHQocm9vdCwgdGV4dCkge1xuICBlbnN1cmVEaXIocHJvamVjdERpcihyb290KSlcbiAgYXdhaXQgYXBwZW5kRmlsZShwcm9qZWN0SGlzdG9yeUZpbGUocm9vdCksIEpTT04uc3RyaW5naWZ5KHsgdGV4dCwgYXQ6IERhdGUubm93KCkgfSkgKyAnXFxuJylcbn1cblxuZnVuY3Rpb24gcGFyc2VQcm9tcHRMaW5lcyh0ZXh0KSB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBsaW5lLnRyaW0oKSA/IEpTT04ucGFyc2UobGluZSkgOiBudWxsXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFByb21wdHMoZmlsZSwgc2NvcGUpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBlbnRyaWVzID0gcGFyc2VQcm9tcHRMaW5lcyhhd2FpdCByZWFkRmlsZShmaWxlLCAndXRmLTgnKSlcbiAgICByZXR1cm4gZW50cmllc1xuICAgICAgLmZpbHRlcigoZSkgPT4gdHlwZW9mIGUudGV4dCA9PT0gJ3N0cmluZycgJiYgZS50ZXh0LnRyaW0oKSlcbiAgICAgIC5zbGljZSgtTUFYX1BST01QVFNfUEVSX1NDT1BFKVxuICAgICAgLm1hcCgoZSkgPT4gKHsgdGV4dDogZS50ZXh0LCBhdDogZS5hdCB8fCAwLCBzY29wZSB9KSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQcm9qZWN0UHJvbXB0cyhyb290KSB7XG4gIHJldHVybiByZWFkUHJvbXB0cyhwcm9qZWN0SGlzdG9yeUZpbGUocm9vdCksICdwcm9qZWN0Jylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRHbG9iYWxQcm9tcHRzKCkge1xuICBjb25zdCBwcm9qZWN0c0RpciA9IGpvaW4ocGljb0hvbWUoKSwgJ3Byb2plY3RzJylcbiAgbGV0IHByb2plY3RzID0gW11cbiAgdHJ5IHtcbiAgICBwcm9qZWN0cyA9IGF3YWl0IHJlYWRkaXIocHJvamVjdHNEaXIpXG4gIH0gY2F0Y2gge31cbiAgY29uc3QgbmVzdGVkID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcHJvamVjdHMubWFwKChwKSA9PiByZWFkUHJvbXB0cyhqb2luKHByb2plY3RzRGlyLCBwLCAnaGlzdG9yeS5qc29ubCcpLCAnZXZlcnl3aGVyZScpKSxcbiAgKVxuICByZXR1cm4gbmVzdGVkLmZsYXQoKS5zb3J0KChhLCBiKSA9PiBiLmF0IC0gYS5hdCkuc2xpY2UoMCwgTUFYX1BST01QVFNfUEVSX1NDT1BFKVxufVxuIiwgImltcG9ydCB7IHJlYWRkaXIsIHN0YXQgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCdcbmltcG9ydCB7IHBpY29Ib21lIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbFRvb2xzRGlyKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAndG9vbHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdFRvb2xzRGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocm9vdCwgJy5waWNvJywgJ3Rvb2xzJylcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGUodG9vbCwgZmlsZSkge1xuICBpZiAoIXRvb2wgfHwgdHlwZW9mIHRvb2wgIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ2RlZmF1bHQgZXhwb3J0IGlzIG5vdCBhIHRvb2wgb2JqZWN0JylcbiAgaWYgKHR5cGVvZiB0b29sLm5hbWUgIT09ICdzdHJpbmcnIHx8ICF0b29sLm5hbWUpIHRocm93IG5ldyBFcnJvcigndG9vbC5uYW1lIG11c3QgYmUgYSBzdHJpbmcnKVxuICBpZiAodHlwZW9mIHRvb2wuZGVzY3JpcHRpb24gIT09ICdzdHJpbmcnKSB0aHJvdyBuZXcgRXJyb3IoJ3Rvb2wuZGVzY3JpcHRpb24gbXVzdCBiZSBhIHN0cmluZycpXG4gIGlmICh0eXBlb2YgdG9vbC5leGVjdXRlICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ3Rvb2wuZXhlY3V0ZSBtdXN0IGJlIGEgZnVuY3Rpb24nKVxuICBpZiAoIXRvb2wuc2NoZW1hIHx8IHR5cGVvZiB0b29sLnNjaGVtYSAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcigndG9vbC5zY2hlbWEgbXVzdCBiZSBhbiBvYmplY3QnKVxuICByZXR1cm4geyAuLi50b29sLCBfZmlsZTogZmlsZSB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRUb29sKGZpbGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBtdGltZU1zIH0gPSBhd2FpdCBzdGF0KGZpbGUpXG4gIGNvbnN0IG1vZHVsZSA9IGF3YWl0IGltcG9ydChgJHtwYXRoVG9GaWxlVVJMKGZpbGUpLmhyZWZ9P3Y9JHttdGltZU1zfWApXG4gIGNvbnN0IGV4cG9ydGVkID0gbW9kdWxlLmRlZmF1bHRcbiAgY29uc3QgdG9vbCA9IHR5cGVvZiBleHBvcnRlZCA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IGV4cG9ydGVkKGNvbnRleHQpIDogZXhwb3J0ZWRcbiAgcmV0dXJuIHZhbGlkYXRlKHRvb2wsIGZpbGUpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjYW5EaXIoZGlyLCBjb250ZXh0LCBzb3VyY2UpIHtcbiAgbGV0IG5hbWVzID0gW11cbiAgdHJ5IHtcbiAgICBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4geyB0b29sczogW10sIGVycm9yczogW10gfVxuICB9XG4gIGNvbnN0IHRvb2xzID0gW11cbiAgY29uc3QgZXJyb3JzID0gW11cbiAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgaWYgKCFuYW1lLmVuZHNXaXRoKCcuanMnKSAmJiAhbmFtZS5lbmRzV2l0aCgnLm1qcycpKSBjb250aW51ZVxuICAgIGNvbnN0IGZpbGUgPSBqb2luKGRpciwgbmFtZSlcbiAgICB0cnkge1xuICAgICAgdG9vbHMucHVzaCh7IC4uLihhd2FpdCBsb2FkVG9vbChmaWxlLCBjb250ZXh0KSksIHNvdXJjZSB9KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZXJyb3JzLnB1c2goeyBmaWxlLCBlcnJvcjogU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMjAwKSB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4geyB0b29scywgZXJyb3JzIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNjYW5Vc2VyVG9vbHMoeyBjd2QsIHJvb3QgfSkge1xuICBjb25zdCBjb250ZXh0ID0geyBjd2QsIHJvb3QgfVxuICBjb25zdCBnbG9iYWwgPSBhd2FpdCBzY2FuRGlyKGdsb2JhbFRvb2xzRGlyKCksIGNvbnRleHQsICdnbG9iYWwnKVxuICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgc2NhbkRpcihwcm9qZWN0VG9vbHNEaXIocm9vdCksIGNvbnRleHQsICdwcm9qZWN0JylcbiAgY29uc3QgYnlOYW1lID0gbmV3IE1hcCgpXG4gIGZvciAoY29uc3QgdG9vbCBvZiBbLi4uZ2xvYmFsLnRvb2xzLCAuLi5wcm9qZWN0LnRvb2xzXSkgYnlOYW1lLnNldCh0b29sLm5hbWUsIHRvb2wpXG4gIHJldHVybiB7IHRvb2xzOiBbLi4uYnlOYW1lLnZhbHVlcygpXSwgZXJyb3JzOiBbLi4uZ2xvYmFsLmVycm9ycywgLi4ucHJvamVjdC5lcnJvcnNdIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcblxuYXN5bmMgZnVuY3Rpb24gcmVhZEN1cnJlbnQocGF0aCkge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCByZWFkRmlsZShwYXRoLCAndXRmLTgnKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXZlcnRFZGl0cyhlZGl0cykge1xuICBjb25zdCByZXZlcnRlZCA9IFtdXG4gIGNvbnN0IHNraXBwZWQgPSBbXVxuICBmb3IgKGNvbnN0IGVkaXQgb2YgWy4uLmVkaXRzXS5yZXZlcnNlKCkpIHtcbiAgICBjb25zdCB7IHBhdGgsIGJlZm9yZSwgYWZ0ZXIgfSA9IGVkaXQucmV2ZXJ0XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IHJlYWRDdXJyZW50KHBhdGgpXG4gICAgaWYgKGN1cnJlbnQgPT09IGFmdGVyKSB7XG4gICAgICBhd2FpdCB3cml0ZUZpbGUocGF0aCwgYmVmb3JlLCAndXRmLTgnKVxuICAgICAgcmV2ZXJ0ZWQucHVzaChlZGl0LmNhbGxJZClcbiAgICB9IGVsc2Uge1xuICAgICAgc2tpcHBlZC5wdXNoKHsgcGF0aCwgY2FsbElkOiBlZGl0LmNhbGxJZCwgcmVhc29uOiAnZmlsZSBjaGFuZ2VkIHNpbmNlIGVkaXQnIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHJldmVydGVkLCBza2lwcGVkIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYXBwbHlFZGl0cyhlZGl0cykge1xuICBjb25zdCByZWFwcGxpZWQgPSBbXVxuICBjb25zdCBza2lwcGVkID0gW11cbiAgZm9yIChjb25zdCBlZGl0IG9mIGVkaXRzKSB7XG4gICAgY29uc3QgeyBwYXRoLCBiZWZvcmUsIGFmdGVyIH0gPSBlZGl0LnJldmVydFxuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCByZWFkQ3VycmVudChwYXRoKVxuICAgIGlmIChjdXJyZW50ID09PSBiZWZvcmUpIHtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShwYXRoLCBhZnRlciwgJ3V0Zi04JylcbiAgICAgIHJlYXBwbGllZC5wdXNoKGVkaXQuY2FsbElkKVxuICAgIH0gZWxzZSB7XG4gICAgICBza2lwcGVkLnB1c2goeyBwYXRoLCBjYWxsSWQ6IGVkaXQuY2FsbElkLCByZWFzb246ICdmaWxlIGNoYW5nZWQgc2luY2UgcmV2ZXJ0JyB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4geyByZWFwcGxpZWQsIHNraXBwZWQgfVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiB0cmFuc2NyaXB0VG9NYXJrZG93bih0cmFuc2NyaXB0LCB7IHRpdGxlID0gJ3BpY28gc2Vzc2lvbicgfSA9IHt9KSB7XG4gIGNvbnN0IHBhcnRzID0gW2AjICR7dGl0bGV9YCwgJyddXG4gIGZvciAoY29uc3QgaXRlbSBvZiB0cmFuc2NyaXB0KSB7XG4gICAgaWYgKGl0ZW0ua2luZCA9PT0gJ3VzZXInKSB7XG4gICAgICBwYXJ0cy5wdXNoKCcjIyBZb3UnLCAnJywgaXRlbS50ZXh0LCAnJylcbiAgICB9IGVsc2UgaWYgKGl0ZW0ua2luZCA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgIHBhcnRzLnB1c2goaXRlbS5pbnRlcnJ1cHRlZCA/IGAke2l0ZW0udGV4dH1cXG5cXG4qKGludGVycnVwdGVkKSpgIDogaXRlbS50ZXh0LCAnJylcbiAgICB9IGVsc2UgaWYgKGl0ZW0ua2luZCA9PT0gJ3Rvb2wnKSB7XG4gICAgICBjb25zdCBsYWJlbCA9IGl0ZW0uZGlmZiA/IGAgKCske2l0ZW0uZGlmZi5hZGRpdGlvbnN9IC0ke2l0ZW0uZGlmZi5kZWxldGlvbnN9KWAgOiAnJ1xuICAgICAgcGFydHMucHVzaChgPiAke2l0ZW0uc3RhdHVzID09PSAncmV2ZXJ0ZWQnID8gJ1x1MjFBOScgOiAnXHUyNzEzJ30gXFxgJHtpdGVtLm5hbWV9XFxgICR7aXRlbS50aXRsZX0ke2xhYmVsfWAsICcnKVxuICAgIH0gZWxzZSBpZiAoaXRlbS5raW5kID09PSAnc3VtbWFyeScpIHtcbiAgICAgIHBhcnRzLnB1c2goYD4gc3VtbWFyeTogJHtpdGVtLnRleHR9YCwgJycpXG4gICAgfVxuICB9XG4gIHJldHVybiBwYXJ0cy5qb2luKCdcXG4nKVxufVxuIiwgImltcG9ydCB7IGZ1enp5U2NvcmUgfSBmcm9tICcuL2Z1enp5LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGxldGlvbkNvbnRleHQoeyB2YWx1ZSwgcmVzb2x2ZSB9KSB7XG4gIGlmICh2YWx1ZS5pbmNsdWRlcygnXFxuJykpIHJldHVybiBudWxsXG4gIGNvbnN0IG0gPSB2YWx1ZS5tYXRjaCgvXlxcLyhcXFMrKSAoLiopJC8pXG4gIGlmICghbSkgcmV0dXJuIG51bGxcbiAgY29uc3Qgc291cmNlID0gcmVzb2x2ZShtWzFdLnRvTG93ZXJDYXNlKCkpXG4gIGlmICghc291cmNlIHx8IHNvdXJjZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsXG4gIGNvbnN0IHRva2VucyA9IG1bMl0uc3BsaXQoJyAnKVxuICBjb25zdCBwYXJ0aWFsID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXVxuICBjb25zdCBtYXRjaGVzID0gc291cmNlXG4gICAgLm1hcCgocykgPT4gW2Z1enp5U2NvcmUocGFydGlhbCwgcyksIHNdKVxuICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICAgIC5tYXAoKFssIHNdKSA9PiBzKVxuICByZXR1cm4geyBwYXJ0aWFsLCBtYXRjaGVzLCBzdGFydDogdmFsdWUubGVuZ3RoIC0gcGFydGlhbC5sZW5ndGggfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlDb21wbGV0aW9uKHZhbHVlLCBjdHgsIGNhbmRpZGF0ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgY3R4LnN0YXJ0KSArIGNhbmRpZGF0ZSArICcgJ1xufVxuIiwgImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IGZnIGZyb20gJ2Zhc3QtZ2xvYidcblxuY29uc3QgTUFYX0ZJTEVTID0gNTAwMFxuY29uc3QgVFRMID0gNTAwMFxuXG5sZXQgY2FjaGVkID0geyBhdDogMCwgY3dkOiBudWxsLCBmaWxlczogW10gfVxuXG5mdW5jdGlvbiByaXBncmVwRmlsZXMoY3dkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGFyZ3MgPSBbJy0tZmlsZXMnLCAnLS1oaWRkZW4nLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJywgJy0tc29ydHI9bW9kaWZpZWQnXVxuICAgIGV4ZWNGaWxlKCdyZycsIGFyZ3MsIHsgY3dkLCBtYXhCdWZmZXI6IDUwICogMTAyNCAqIDEwMjQgfSwgKGVyciwgc3Rkb3V0KSA9PiB7XG4gICAgICByZXNvbHZlKGVyciAmJiAhc3Rkb3V0ID8gbnVsbCA6IHN0ZG91dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pKVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0RmlsZXMoY3dkKSB7XG4gIGlmIChjYWNoZWQuY3dkID09PSBjd2QgJiYgRGF0ZS5ub3coKSAtIGNhY2hlZC5hdCA8IFRUTCkgcmV0dXJuIGNhY2hlZC5maWxlc1xuICBsZXQgZmlsZXMgPSBhd2FpdCByaXBncmVwRmlsZXMoY3dkKVxuICBpZiAoIWZpbGVzKSB7XG4gICAgZmlsZXMgPSBhd2FpdCBmZygnKiovKicsIHtcbiAgICAgIGN3ZCxcbiAgICAgIG9ubHlGaWxlczogdHJ1ZSxcbiAgICAgIGRvdDogdHJ1ZSxcbiAgICAgIGlnbm9yZTogWycqKi9ub2RlX21vZHVsZXMvKionLCAnKiovLmdpdC8qKiddLFxuICAgIH0pLmNhdGNoKCgpID0+IFtdKVxuICB9XG4gIGNhY2hlZCA9IHsgYXQ6IERhdGUubm93KCksIGN3ZCwgZmlsZXM6IGZpbGVzLnNsaWNlKDAsIE1BWF9GSUxFUykgfVxuICByZXR1cm4gY2FjaGVkLmZpbGVzXG59XG4iLCAiaW1wb3J0IHsgY29kZVRvQU5TSSB9IGZyb20gJ0BzaGlraWpzL2NsaSdcbmltcG9ydCB7IGNyZWF0ZVNpZ25hbCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IHNoaWtpVGhlbWUgfSBmcm9tICcuL3RoZW1lLmpzJ1xuXG5jb25zdCBMQU5HUyA9IHtcbiAganM6ICdqcycsIG1qczogJ2pzJywgY2pzOiAnanMnLCBqc3g6ICdqc3gnLCB0czogJ3RzJywgdHN4OiAndHN4JyxcbiAganNvbjogJ2pzb24nLCBqc29ubDogJ2pzb24nLCBtZDogJ21kJywgcHk6ICdweXRob24nLCByYjogJ3J1YnknLCBnbzogJ2dvJyxcbiAgcnM6ICdydXN0JywgYzogJ2MnLCBoOiAnYycsIGNwcDogJ2NwcCcsIGphdmE6ICdqYXZhJywgY3NzOiAnY3NzJyxcbiAgaHRtbDogJ2h0bWwnLCB2dWU6ICd2dWUnLCBzaDogJ2Jhc2gnLCBiYXNoOiAnYmFzaCcsIHpzaDogJ2Jhc2gnLFxuICB5bWw6ICd5YW1sJywgeWFtbDogJ3lhbWwnLCB0b21sOiAndG9tbCcsIHNxbDogJ3NxbCcsIHN2ZWx0ZTogJ3N2ZWx0ZScsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYW5nRm9yUGF0aChwYXRoKSB7XG4gIGNvbnN0IGV4dCA9IFN0cmluZyhwYXRoKS5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKClcbiAgcmV0dXJuIExBTkdTW2V4dF0gfHwgJ3R4dCdcbn1cblxuY29uc3QgY2FjaGUgPSBuZXcgTWFwKClcbmNvbnN0IHBlbmRpbmcgPSBuZXcgU2V0KClcbmNvbnN0IGZhaWxlZCA9IG5ldyBTZXQoKVxuY29uc3QgW3ZlcnNpb24sIHNldFZlcnNpb25dID0gY3JlYXRlU2lnbmFsKDApXG5cbmV4cG9ydCBjb25zdCBoaWdobGlnaHRWZXJzaW9uID0gdmVyc2lvblxuXG5leHBvcnQgZnVuY3Rpb24gaGlnaGxpZ2h0KGNvZGUsIGxhbmcpIHtcbiAgY29uc3Qgc2FmZUxhbmcgPSBsYW5nICYmICFmYWlsZWQuaGFzKGxhbmcpID8gbGFuZyA6ICd0eHQnXG4gIGNvbnN0IHRoZW1lID0gc2hpa2lUaGVtZSgpXG4gIHJldHVybiBjb2RlXG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGAke3RoZW1lfVxcbiR7c2FmZUxhbmd9XFxuJHtsaW5lfWBcbiAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkgcmV0dXJuIGNhY2hlLmdldChrZXkpXG4gICAgICB3YXJtKGxpbmUsIHNhZmVMYW5nLCB0aGVtZSwga2V5KVxuICAgICAgcmV0dXJuIGxpbmVcbiAgICB9KVxuICAgIC5qb2luKCdcXG4nKVxufVxuXG5mdW5jdGlvbiB3YXJtKGxpbmUsIGxhbmcsIHRoZW1lLCBrZXkpIHtcbiAgaWYgKHBlbmRpbmcuaGFzKGtleSkpIHJldHVyblxuICBwZW5kaW5nLmFkZChrZXkpXG4gIGNvZGVUb0FOU0kobGluZSwgbGFuZywgdGhlbWUpXG4gICAgLnRoZW4oKGFuc2kpID0+IGNhY2hlLnNldChrZXksIGFuc2kucmVwbGFjZSgvXFxuJC8sICcnKSkpXG4gICAgLmNhdGNoKCgpID0+IHtcbiAgICAgIGZhaWxlZC5hZGQobGFuZylcbiAgICAgIGNhY2hlLnNldChrZXksIGxpbmUpXG4gICAgfSlcbiAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICBwZW5kaW5nLmRlbGV0ZShrZXkpXG4gICAgICBzZXRWZXJzaW9uKCh2KSA9PiB2ICsgMSlcbiAgICB9KVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNpZ25hbCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcblxuY29uc3QgUEFMRVRURVMgPSB7XG4gIGRhcms6IHtcbiAgICBkZXNjOiAnbGlnaHQgdGV4dCBmb3IgZGFyayB0ZXJtaW5hbHMnLFxuICAgIGFjY2VudDogJyM2QkU3OTUnLFxuICAgIGZnOiAnI2U1ZTdlYicsXG4gICAgZmdTb2Z0OiAnIzljYTNhZicsXG4gICAgbXV0ZWQ6ICcjNmI3MjgwJyxcbiAgICBmYWludDogJyM0YjU1NjMnLFxuICAgIHBhbmVsQmc6ICcjMWUxZTIyJyxcbiAgICBzZWxlY3RCZzogJyMzNzQxNTEnLFxuICAgIHJlZDogJyNmODcxNzEnLFxuICAgIGhpZ2hsaWdodDogJyNmZmZmZmYnLFxuICAgIHNoaWtpOiAnbm9yZCcsXG4gIH0sXG4gIGxpZ2h0OiB7XG4gICAgZGVzYzogJ2RhcmsgdGV4dCBmb3IgbGlnaHQgdGVybWluYWxzJyxcbiAgICBhY2NlbnQ6ICcjMGY5ZDYzJyxcbiAgICBmZzogJyMxZjI0MzAnLFxuICAgIGZnU29mdDogJyM0YjU1NjMnLFxuICAgIG11dGVkOiAnIzZiNzI4MCcsXG4gICAgZmFpbnQ6ICcjYTNhOGIzJyxcbiAgICBwYW5lbEJnOiAnI2U5ZTllZScsXG4gICAgc2VsZWN0Qmc6ICcjZDRkNGRjJyxcbiAgICByZWQ6ICcjZGMyNjI2JyxcbiAgICBoaWdobGlnaHQ6ICcjMTExODI3JyxcbiAgICBzaGlraTogJ2dpdGh1Yi1saWdodCcsXG4gIH0sXG4gIG5vcmQ6IHtcbiAgICBkZXNjOiAnYXJjdGljIGJsdWVzIG9uIHBvbGFyIG5pZ2h0JyxcbiAgICBhY2NlbnQ6ICcjODhjMGQwJyxcbiAgICBmZzogJyNkOGRlZTknLFxuICAgIGZnU29mdDogJyNhYWIyYzQnLFxuICAgIG11dGVkOiAnIzdiODhhMScsXG4gICAgZmFpbnQ6ICcjNjE2ZTg4JyxcbiAgICBwYW5lbEJnOiAnIzNiNDI1MicsXG4gICAgc2VsZWN0Qmc6ICcjNDM0YzVlJyxcbiAgICByZWQ6ICcjYmY2MTZhJyxcbiAgICBoaWdobGlnaHQ6ICcjZWNlZmY0JyxcbiAgICBzaGlraTogJ25vcmQnLFxuICB9LFxufVxuXG5leHBvcnQgbGV0IERFRkFVTFRfQUNDRU5UID0gUEFMRVRURVMuZGFyay5hY2NlbnRcbmV4cG9ydCBsZXQgRkcgPSBQQUxFVFRFUy5kYXJrLmZnXG5leHBvcnQgbGV0IEZHX1NPRlQgPSBQQUxFVFRFUy5kYXJrLmZnU29mdFxuZXhwb3J0IGxldCBNVVRFRCA9IFBBTEVUVEVTLmRhcmsubXV0ZWRcbmV4cG9ydCBsZXQgRkFJTlQgPSBQQUxFVFRFUy5kYXJrLmZhaW50XG5leHBvcnQgbGV0IFBBTkVMX0JHID0gUEFMRVRURVMuZGFyay5wYW5lbEJnXG5leHBvcnQgbGV0IFNFTEVDVF9CRyA9IFBBTEVUVEVTLmRhcmsuc2VsZWN0QmdcbmV4cG9ydCBsZXQgUkVEID0gUEFMRVRURVMuZGFyay5yZWRcbmV4cG9ydCBsZXQgSElHSExJR0hUID0gUEFMRVRURVMuZGFyay5oaWdobGlnaHRcblxubGV0IGN1cnJlbnRQYWxldHRlID0gJ2RhcmsnXG5sZXQgZXhwbGljaXRBY2NlbnQgPSBudWxsXG5cbmNvbnN0IFthY2NlbnRWYWx1ZSwgc2V0QWNjZW50VmFsdWVdID0gY3JlYXRlU2lnbmFsKERFRkFVTFRfQUNDRU5UKVxuXG5leHBvcnQgY29uc3QgYWNjZW50ID0gYWNjZW50VmFsdWVcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEFjY2VudChjb2xvcikge1xuICBleHBsaWNpdEFjY2VudCA9IGNvbG9yIHx8IG51bGxcbiAgc2V0QWNjZW50VmFsdWUoZXhwbGljaXRBY2NlbnQgfHwgREVGQVVMVF9BQ0NFTlQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQYWxldHRlKG5hbWUpIHtcbiAgY3VycmVudFBhbGV0dGUgPSBQQUxFVFRFU1tuYW1lXSA/IG5hbWUgOiAnZGFyaydcbiAgY29uc3QgcCA9IFBBTEVUVEVTW2N1cnJlbnRQYWxldHRlXVxuICBERUZBVUxUX0FDQ0VOVCA9IHAuYWNjZW50XG4gIEZHID0gcC5mZ1xuICBGR19TT0ZUID0gcC5mZ1NvZnRcbiAgTVVURUQgPSBwLm11dGVkXG4gIEZBSU5UID0gcC5mYWludFxuICBQQU5FTF9CRyA9IHAucGFuZWxCZ1xuICBTRUxFQ1RfQkcgPSBwLnNlbGVjdEJnXG4gIFJFRCA9IHAucmVkXG4gIEhJR0hMSUdIVCA9IHAuaGlnaGxpZ2h0XG4gIHNldEFjY2VudFZhbHVlKGV4cGxpY2l0QWNjZW50IHx8IHAuYWNjZW50KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFsZXR0ZU5hbWUoKSB7XG4gIHJldHVybiBjdXJyZW50UGFsZXR0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFsZXR0ZUxpc3QoKSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhQQUxFVFRFUykubWFwKChba2V5LCBwXSkgPT4gKHsga2V5LCBkZXNjOiBwLmRlc2MgfSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaGlraVRoZW1lKCkge1xuICByZXR1cm4gUEFMRVRURVNbY3VycmVudFBhbGV0dGVdLnNoaWtpXG59XG4iLCAiaW1wb3J0IHsgRGlmZiwgTWFya2Rvd24sIFNwaW5uZXIgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBhY2NlbnQsIEZHLCBGR19TT0ZULCBNVVRFRCwgRkFJTlQsIFBBTkVMX0JHLCBSRUQgfSBmcm9tICcuL3RoZW1lLmpzJ1xuaW1wb3J0IHsgaGlnaGxpZ2h0LCBsYW5nRm9yUGF0aCB9IGZyb20gJy4vaGlnaGxpZ2h0LmpzJ1xuXG5leHBvcnQgeyBkZWZhdWx0VGl0bGUgYXMgdWlUaXRsZSB9IGZyb20gJy4uL2NvcmUvdG9vbHMvcmVjb3JkZXIuanMnXG5cbmZ1bmN0aW9uIFRvb2xDYXJkKHsgbmFtZSwgdGl0bGUsIHN0YXR1cywgZGlmZiwgcmV2ZXJ0LCBmdWxsT3V0cHV0LCBlcnJvciwgYmFja2dyb3VuZCwgdmVyYm9zZSB9KSB7XG4gIGNvbnN0IHJ1bm5pbmcgPSBzdGF0dXMgPT09ICdydW5uaW5nJ1xuICBjb25zdCBpbnRlcnJ1cHRlZCA9IHN0YXR1cyA9PT0gJ2ludGVycnVwdGVkJ1xuICBjb25zdCByZXZlcnRlZCA9IHN0YXR1cyA9PT0gJ3JldmVydGVkJ1xuICBjb25zdCBmYWlsZWQgPSBzdGF0dXMgPT09ICdlcnJvcidcbiAgY29uc3Qgb3V0TGluZXMgPSBmdWxsT3V0cHV0ID8gZnVsbE91dHB1dC5zcGxpdCgnXFxuJykgOiBudWxsXG5cbiAgY29uc3QgaW5mbyA9IHJ1bm5pbmcgPyAncnVubmluZydcbiAgICA6IGludGVycnVwdGVkID8gJ2ludGVycnVwdGVkJ1xuICAgIDogcmV2ZXJ0ZWQgPyAncmV2ZXJ0ZWQnXG4gICAgOiBmYWlsZWQgPyAnZmFpbGVkJ1xuICAgIDogYmFja2dyb3VuZCA/ICdiYWNrZ3JvdW5kIFx1MDBCNyAvc2hlbGxzJ1xuICAgIDogZGlmZiA/IGArJHtkaWZmLmFkZGl0aW9uc30gLSR7ZGlmZi5kZWxldGlvbnN9YFxuICAgIDogb3V0TGluZXMgPyBgJHtvdXRMaW5lcy5sZW5ndGh9ICR7b3V0TGluZXMubGVuZ3RoID09PSAxID8gJ2xpbmUnIDogJ2xpbmVzJ30gXHUwMEI3IGN0cmwrb2BcbiAgICA6ICdkb25lJ1xuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAge3J1bm5pbmdcbiAgICAgICAgICA/IDxTcGlubmVyIGNvbG9yPXthY2NlbnQoKX0gLz5cbiAgICAgICAgICA6IDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBpbnRlcnJ1cHRlZCB8fCBmYWlsZWQgPyBSRUQgOiByZXZlcnRlZCA/IE1VVEVEIDogYWNjZW50KCkgfX0+e2ludGVycnVwdGVkID8gJ1x1MjcxNycgOiBmYWlsZWQgPyAnXHUyNzE3JyA6IHJldmVydGVkID8gJ1x1MjFBOScgOiAnXHUyNzEzJ308L3RleHQ+fVxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2Ake25hbWUucGFkRW5kKDUpfSBgfTwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogRkcgfX0+e3RpdGxlIHx8IG5hbWV9PC90ZXh0PlxuICAgICAgICA8L2JveD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICAke2luZm99YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIHtmYWlsZWQgJiYgZXJyb3IgJiYgKFxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntgICAke2Vycm9yfWB9PC90ZXh0PlxuICAgICAgKX1cbiAgICAgIHtyZXZlcnQgJiYgIXJ1bm5pbmcgJiYgIXJldmVydGVkICYmICEoZGlmZiAmJiBkaWZmLmFkZGl0aW9ucyA9PT0gMCAmJiBkaWZmLmRlbGV0aW9ucyA9PT0gMCkgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IE1hdGgubWluKChkaWZmPy5odW5rcyB8fCBbXSkucmVkdWNlKChhLCBoKSA9PiBhICsgaC5saW5lcy5sZW5ndGgsIDIpICsgMSwgMTIpLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPERpZmZcbiAgICAgICAgICAgIGJlZm9yZT17cmV2ZXJ0LmJlZm9yZX1cbiAgICAgICAgICAgIGFmdGVyPXtyZXZlcnQuYWZ0ZXJ9XG4gICAgICAgICAgICBsYW5ndWFnZT17bGFuZ0ZvclBhdGgocmV2ZXJ0LnBhdGgpfVxuICAgICAgICAgICAgaGlnaGxpZ2h0PXtoaWdobGlnaHR9XG4gICAgICAgICAgICBmb2N1c2VkPXtmYWxzZX1cbiAgICAgICAgICAgIHNjcm9sbGJhcj17ZmFsc2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuICAgICAge291dExpbmVzICYmIHZlcmJvc2UgJiYgIXJ1bm5pbmcgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgJCAke3RpdGxlfWB9PC90ZXh0PlxuICAgICAgICAgIHtvdXRMaW5lcy5zbGljZSgwLCAyMDApLm1hcCgobGluZSwgaSkgPT4gKFxuICAgICAgICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkdfU09GVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgICApKX1cbiAgICAgICAgICB7b3V0TGluZXMubGVuZ3RoID4gMjAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YFx1MjAyNiAke291dExpbmVzLmxlbmd0aCAtIDIwMH0gbW9yZSBsaW5lc2B9PC90ZXh0Pn1cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCYW5uZXIoeyB2ZXJzaW9uLCBjd2QsIG1vZGVsTmFtZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgcGFkZGluZ1g6IDIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57JyhcXFxcXy8pJ308L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57JyhcdTIwMjJcdTFEMTdcdTIwMjIpJ308L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgYm9sZDogdHJ1ZSwgY29sb3I6IGFjY2VudCgpIH19PnsnICBwaWNvJ308L3RleHQ+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgIHYke3ZlcnNpb259IFx1MDBCNyAke21vZGVsTmFtZX1gfTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCAgJHtjd2R9YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVzc2FnZSh7IGl0ZW0sIHZlcmJvc2UgfSkge1xuICBpZiAoaXRlbS5raW5kID09PSAndG9vbCcpIHtcbiAgICByZXR1cm4gPFRvb2xDYXJkIHsuLi5pdGVtfSB2ZXJib3NlPXt2ZXJib3NlfSAvPlxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3N1bW1hcnknKSB7XG4gICAgY29uc3QgbGluZXMgPSBpdGVtLnRleHQuc3BsaXQoJ1xcbicpXG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntpdGVtLnNvdXJjZSA9PT0gJ2NvbXBhY3QnID8gJ1x1MjcyNiBzdW1tYXJ5IFx1MDBCNyBjb252ZXJzYXRpb24gY29tcGFjdGVkIGFib3ZlIHRoaXMgcG9pbnQnIDogJ1x1MjcyNiBzdW1tYXJ5IFx1MDBCNyByZXdvdW5kIGNvbnZlcnNhdGlvbid9PC90ZXh0PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake2xpbmVzLmxlbmd0aH0gJHtsaW5lcy5sZW5ndGggPT09IDEgPyAnbGluZScgOiAnbGluZXMnfSBcdTAwQjcgY3RybCtvYH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dmVyYm9zZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgICAge2xpbmVzLnNsaWNlKDAsIDUwMCkubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgICAge2xpbmVzLmxlbmd0aCA+IDUwMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2BcdTIwMjYgJHtsaW5lcy5sZW5ndGggLSA1MDB9IG1vcmUgbGluZXNgfTwvdGV4dD59XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAndGhvdWdodHMnKSB7XG4gICAgY29uc3QgbGluZXMgPSBpdGVtLnRleHQuc3BsaXQoJ1xcbicpXG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PnsnXHUyNzI2IHRob3VnaHRzJ308L3RleHQ+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCR7bGluZXMubGVuZ3RofSAke2xpbmVzLmxlbmd0aCA9PT0gMSA/ICdsaW5lJyA6ICdsaW5lcyd9IFx1MDBCNyBjdHJsK29gfTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIHt2ZXJib3NlICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgICB7bGluZXMuc2xpY2UoMCwgMzAwKS5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkdfU09GVCwgaXRhbGljOiB0cnVlIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtsaW5lcy5sZW5ndGggPiAzMDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgXHUyMDI2ICR7bGluZXMubGVuZ3RoIC0gMzAwfSBtb3JlIGxpbmVzYH08L3RleHQ+fVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ25vdGljZScpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntgXHUyNjk5ICR7aXRlbS50ZXh0LnJlcGxhY2UoL15cXFtzeXN0ZW0gbm90aWZpY2F0aW9uXFxdXFxzKi8sICcnKX1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdza2lsbCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntgXHUyNzI2IHNraWxsOiAke2l0ZW0ubmFtZX1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICd1c2VyJykge1xuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBwYWRkaW5nWTogMSB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+e2l0ZW0udGV4dH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgdGV4dCA9IGl0ZW0uaW50ZXJydXB0ZWQgPyBgJHtpdGVtLnRleHR9ICooaW50ZXJydXB0ZWQpKmAgOiBpdGVtLnRleHRcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8TWFya2Rvd24gdGV4dD17dGV4dH0gaGlnaGxpZ2h0PXtoaWdobGlnaHR9IGNvZGVCZz17bnVsbH0gLz5cbiAgICA8L2JveD5cbiAgKVxufVxuIiwgImltcG9ydCB7IE1hcmtkb3duLCBTY3JvbGxCb3gsIHVzZUlucHV0IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgYWNjZW50LCBGQUlOVCB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmNvbnN0IEhFTFBfVEVYVCA9IChjb21tYW5kcykgPT4gYHBpY28gaXMgYSBjb2RpbmcgYWdlbnQgaW4geW91ciB0ZXJtaW5hbC4gSXQgcmVhZHMsIGVkaXRzLCBhbmQgc2VhcmNoZXMgZmlsZXMsIHJ1bnMgY29tbWFuZHMsIGFuZCBzdHJlYW1zIGl0cyB3b3JrIGludG8gdGhpcyB0cmFuc2NyaXB0LlxuXG4jIyBDb21tYW5kc1xuXG5UeXBlIFxcYC9cXGAgaW4gdGhlIGNvbXBvc2VyIHRvIGZpbHRlciB0aGVzZSBhcyB5b3UgdHlwZS5cblxuJHtjb21tYW5kcy5tYXAoKGMpID0+IGAtIFxcYC8ke2MubmFtZX1cXGAgLSAke2MuZGVzY31gKS5qb2luKCdcXG4nKX1cblxuVHdvIGtpbmRzIG9mIHVzZXItZGVmaW5lZCBlbnRyaWVzIGpvaW4gdGhpcyBtZW51OlxuXG4tICoqY29tbWFuZHMqKiAoXFxgfi8ucGljby9jb21tYW5kcy88bmFtZT4ubWRcXGAgb3IgXFxgLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgKTogcHJvbXB0IHRlbXBsYXRlcyB5b3UgaW52b2tlIGFzIFxcYC88bmFtZT4gW2FyZ3NdXFxgLiBcXGAkQVJHVU1FTlRTXFxgIGluIHRoZSBib2R5IGlzIHJlcGxhY2VkIHdpdGggd2hhdGV2ZXIgZm9sbG93cyB0aGUgY29tbWFuZDsgd2l0aG91dCBhIHBsYWNlaG9sZGVyLCBhcmdzIGFyZSBhcHBlbmRlZC4gVGhlIG1vZGVsIG5ldmVyIHNlZXMgdGhlc2UgdW50aWwgeW91IHJ1biBvbmUuXG4tICoqc2tpbGxzKiogKFxcYH4vLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCBvciBcXGAucGljby9za2lsbHMvPG5hbWU+L1NLSUxMLm1kXFxgKTogY2FwYWJpbGl0aWVzIHdpdGggYSBuYW1lIGFuZCBkZXNjcmlwdGlvbi4gWW91IGNhbiBpbnZva2UgdGhlbSBsaWtlIGNvbW1hbmRzLCBhbmQgdGhlIGFnZW50IGNhbiBhbHNvIGRpc2NvdmVyIGFuZCBsb2FkIHRoZW0gaXRzZWxmIHZpYSB0aGUgc2tpbGwgdG9vbC5cbi0gKip0b29scyoqIChcXGB+Ly5waWNvL3Rvb2xzLzxuYW1lPi5qc1xcYCBvciBcXGAucGljby90b29scy88bmFtZT4uanNcXGApOiBFUyBtb2R1bGVzIGRlZmF1bHQtZXhwb3J0aW5nIFxcYHsgbmFtZSwgZGVzY3JpcHRpb24sIHNjaGVtYSwgZXhlY3V0ZSB9XFxgIChvciBhIGZhY3RvcnkgcmVjZWl2aW5nIFxcYHsgY3dkLCByb290IH1cXGApLiBUaGV5IGpvaW4gdGhlIGFnZW50J3MgdG9vbHNldCBhbmQgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBlZGl0cyBhcHBseSBvbiB0aGUgbmV4dCBtZXNzYWdlLiBBc2sgdGhlIGFnZW50IHRvIGJ1aWxkIG9uZSBmb3IgeW91OiB0aGUgYnVpbHQtaW4gXFxgL25ldy10b29sXFxgIHNraWxsIHRlYWNoZXMgaXQgdGhlIGZvcm1hdC5cblxuSW4gdGhlIE1DUCBwYW5lbDogc3BhY2Ugb3IgZW50ZXIgdG9nZ2xlcyBhIHNlcnZlciwgXFxgdFxcYCBsaXN0cyBpdHMgdG9vbHMsIFxcYHJcXGAgcmVjb25uZWN0cywgXFxgYVxcYCBhZGRzLCBcXGBkXFxgIHJlbW92ZXMuIFVuZmlsdGVyZWQgbGlzdHMgKGVmZm9ydCwgcmV3aW5kIG9wdGlvbnMsIE1DUCkgYWxzbyBtb3ZlIHdpdGggXFxgalxcYC9cXGBrXFxgIGFuZCBqdW1wIHdpdGggXFxgZ1xcYC9cXGBHXFxgLlxuXG4jIyBDb21wb3NlclxuXG4tIFxcYGVudGVyXFxgIHNlbmRzLCBcXGBzaGlmdCtlbnRlclxcYCBpbnNlcnRzIGEgbmV3bGluZVxuLSBcXGBAXFxgIG9wZW5zIGEgZnV6enkgZmlsZSBwaWNrZXI7IGVudGVyIGluc2VydHMgdGhlIHNlbGVjdGVkIHBhdGhcbi0gZHJhZyBhbiBpbWFnZSBmaWxlIGludG8gdGhlIHRlcm1pbmFsIHRvIGF0dGFjaCBpdDogaXQgYXBwZWFycyBpbmxpbmUgYXMgXFxgW0ltYWdlICNOXVxcYCwgZXhhY3RseSB3aGVyZSB5b3VyIGN1cnNvciBpcywgc28gaW1hZ2VzIGNhbiBzaXQgYmV0d2VlbiBzZW50ZW5jZXM7IGJhY2tzcGFjZSBhZnRlciBvbmUgcmVtb3ZlcyB0aGUgd2hvbGUgYXR0YWNobWVudFxuLSBcXGB0YWJcXGAgY29tcGxldGVzOiBcXGAvc3VtbTx0YWI+XFxgIGZpbmlzaGVzIHRoZSBjb21tYW5kIG5hbWUgYW5kIGN5Y2xlcyB0aHJvdWdoIG1hdGNoZXMgb24gcmVwZWF0OyBhZnRlciBhbiBhcmd1bWVudCBzcGFjZSBpdCBjb21wbGV0ZXMgdmFsdWVzIChcXGAvbW9kZWwgZmxhPHRhYj5cXGAsIFxcYC9jb2xvciA8dGFiPlxcYCwgXFxgL2VmZm9ydCA8dGFiPlxcYCkgYW5kIGZpbGUgcGF0aHMgZm9yIHNraWxscyBhbmQgY29tbWFuZHMuIEtlZXAgdHlwaW5nIHRvIG5hcnJvdywgdGFiIG9yIGVudGVyIGluc2VydHNcbi0gXFxgdXBcXGAgYW5kIFxcYGRvd25cXGAgb24gYW4gZW1wdHkgY29tcG9zZXIgcmVjYWxsIG1lc3NhZ2VzIHlvdSBhbHJlYWR5IHNlbnRcbi0gXFxgY3RybCtyXFxgIGZ1enp5LXNlYXJjaGVzIHlvdXIgcHJvbXB0IGhpc3Rvcnkgd2l0aCBhIHByZXZpZXc7IGVudGVyIHB1dHMgdGhlIG1hdGNoIGJhY2sgaW4gdGhlIGNvbXBvc2VyXG4tIFxcYGN0cmwrc1xcYCBvcGVucyB0aGUgc2Vzc2lvbiBwaWNrZXIgKHNhbWUgYXMgXFxgL3Jlc3VtZVxcYCk7IFxcYGN0cmwrdFxcYCBvcGVucyB0aGUgbW9kZWwgcGlja2VyXG4tIFxcYGN0cmwrcFxcYCBzd2l0Y2hlcyBwcm9qZWN0czogcGljayBvbmUgYW5kIHBpY28ganVtcHMgdG8gaXRzIG1vc3QgcmVjZW50IHNlc3Npb24sIGNoYW5naW5nIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgdG9vbHMsIGNvbnRleHQsIGFuZCBNQ1Agc2VydmVycyB0byBtYXRjaDsgXFxgL25ld1xcYCBzdGFydHMgYSBmcmVzaCBzZXNzaW9uIGluIHRoZSBjdXJyZW50IHByb2plY3Rcbi0gXFxgY3RybCtiXFxgIGN5Y2xlcyB0aGlua2luZyBlZmZvcnQgKGRlZmF1bHQsIGxvdywgbWVkaXVtLCBoaWdoLCBtYXgpIG9uIG1vZGVscyB0aGF0IHN1cHBvcnQgaXQ7IFxcYC9lZmZvcnRcXGAgb3BlbnMgdGhlIGZ1bGwgcGlja2VyXG4tIGluc2lkZSBhIHNlYXJjaCBwYW5lbCwgXFxgY3RybCtzXFxgIGN5Y2xlcyB0aGUgc2NvcGUgaW5zdGVhZDogdGhpcyBzZXNzaW9uLCB0aGlzIHByb2plY3QsIG9yIGV2ZXJ5d2hlcmVcbi0gXFxgL3Jld2luZFxcYCByZXN0b3JlcyB0aGUgY29udmVyc2F0aW9uIHRvIGFuIGVhcmxpZXIgbWVzc2FnZTsgYSByZXdpbmQgY2FuIGJlIHVuZG9uZSB3aXRoIFxcYGN0cmwrelxcYFxuLSBtZXNzYWdlcyBzZW50IHdoaWxlIHRoZSBhZ2VudCBpcyByZXNwb25kaW5nIHF1ZXVlIHVwIGFib3ZlIHRoZSBjb21wb3NlciBhbmQgYXJlIGRlbGl2ZXJlZCBhcyBvbmUgbWVzc2FnZSB3aGVuIHRoZSB0dXJuIGZpbmlzaGVzOyBcXGB1cFxcYCBwdWxscyB0aGVtIGJhY2sgZm9yIGVkaXRpbmdcbi0gXFxgZXNjXFxgIGludGVycnVwdHMgYSBzdHJlYW1pbmcgcmVzcG9uc2UsIG9yIGNsZWFycyB0aGUgY29tcG9zZXIgd2hlbiBpZGxlXG5cbiMjIE1vdmluZyBhcm91bmRcblxuLSBcXGB0YWJcXGAgc3dpdGNoZXMgZm9jdXMgYmV0d2VlbiB0aGUgdHJhbnNjcmlwdCBhbmQgdGhlIGNvbXBvc2VyXG4tIHdpdGggdGhlIHRyYW5zY3JpcHQgZm9jdXNlZCwgXFxgdXBcXGAvXFxgZG93blxcYC9cXGBqXFxgL1xcYGtcXGAgc2Nyb2xsIGFuZCBcXGBnXFxgL1xcYEdcXGAganVtcCB0byB0aGUgZW5kc1xuLSBcXGBjdHJsK29cXGAgZXhwYW5kcyBhbmQgY29sbGFwc2VzIHRvb2wgb3V0cHV0IGluIHRoZSB0cmFuc2NyaXB0XG4tIHRoZSBtb3VzZSB3aGVlbCBzY3JvbGxzOyBjbGljay1kcmFnIHNlbGVjdHMgdGV4dCBhbmQgY29waWVzIGl0IG9uIHJlbGVhc2Vcbi0gXFxgY3RybCtjXFxgIHR3aWNlIGV4aXRzXG5cbiMjIFNoZWxsc1xuXG5UaGUgYWdlbnQgY2FuIHJ1biBsb25nLWxpdmVkIHByb2Nlc3NlcyAoZGV2IHNlcnZlcnMsIHdhdGNoZXJzKSB3aXRoIFxcYGJhc2ggYmFja2dyb3VuZDogdHJ1ZVxcYCwgdGhlbiByZWFkIHRoZWlyIG91dHB1dCBhbmQgc3RvcCB0aGVtIGl0c2VsZi4gXFxgL3NoZWxsc1xcYCBsaXN0cyB0aGVtOiBlbnRlciBvcGVucyBhIGxpdmUgb3V0cHV0IHZpZXcsIFxcYGtcXGAga2lsbHMgKHByZXNzIHR3aWNlKSwgXFxgZFxcYCBkaXNtaXNzZXMgYSBkZWFkIG9uZS4gQSBcXGBcdTI2OTkgTlxcYCBpbiB0aGUgZm9vdGVyIHNob3dzIGhvdyBtYW55IGFyZSBydW5uaW5nLiBXaGVuIGEgc2hlbGwgZXhpdHMgb24gaXRzIG93biwgdGhlIGFnZW50IGlzIG5vdGlmaWVkIGFuZCByZXNwb25kczsgc2hlbGxzIGRpZSB3aXRoIHBpY28sIGFuZCBxdWl0dGluZyB3YXJucyB5b3UgaWYgYW55IGFyZSBzdGlsbCB1cC5cblxuIyMgU3Vic2NyaXB0aW9uc1xuXG5cXGAvY29ubmVjdFxcYCBsaXN0cyBzdWJzY3JpcHRpb24gcHJvdmlkZXJzIHlvdSBjYW4gc2lnbiBpbiB3aXRoIGluc3RlYWQgb2YgQVBJIGtleXMuIE9wZW5BSSAoQ2hhdEdQVCAvIENvZGV4IHBsYW4pIHNpZ25zIGluIHRocm91Z2ggeW91ciBicm93c2VyIHZpYSBPQXV0aDsgdG9rZW5zIGFyZSBzdG9yZWQgaW4gXFxgfi8ucGljby9hdXRoLmpzb25cXGAgYW5kIHJlZnJlc2hlZCBhdXRvbWF0aWNhbGx5LCBzbyB5b3Ugc2lnbiBpbiBvbmNlLiBPbmNlIGNvbm5lY3RlZCwgY29kZXggbW9kZWxzIGFwcGVhciBpbiBcXGAvbW9kZWxcXGAsIGJpbGxlZCB0byB5b3VyIHBsYW4uIFxcYGRcXGAgaW4gdGhlIHBhbmVsIGRpc2Nvbm5lY3RzLlxuXG4jIyBNZW1vcnlcblxuVGhlIGFnZW50IHNhdmVzIGR1cmFibGUgZmFjdHMgd2l0aCB0aGUgcmVtZW1iZXIgdG9vbDogb25lIGZpbGUgcGVyIG1lbW9yeSB1bmRlciBcXGB+Ly5waWNvL21lbW9yeVxcYCAoZ2xvYmFsKSBvciB0aGUgcHJvamVjdCdzIGRpcmVjdG9yeSBpbiBcXGB+Ly5waWNvL3Byb2plY3RzXFxgLiBPbmx5IGEgb25lLWxpbmUgaW5kZXggaXMgaW4gaXRzIGNvbnRleHQ7IGl0IGxvYWRzIGEgc3BlY2lmaWMgbWVtb3J5IHdpdGggdGhlIHJlY2FsbCB0b29sIHdoZW4gcmVsZXZhbnQuIFxcYC9tZW1vcnlcXGAgbGlzdHMgZXZlcnl0aGluZyBpdCBrbm93cy4gQXNrIGl0IHRvIHJlbWVtYmVyLCBmb3JnZXQsIG9yIGNsZWFuIHVwIGl0cyBtZW1vcmllcyBpbiBwbGFpbiBsYW5ndWFnZS5cblxuIyMgV2FrZS11cHNcblxuVGhlIGFnZW50IGNhbiBzY2hlZHVsZSBvbmUtdGltZSB3YWtlLXVwcyBmb3IgaXRzZWxmIHdpdGggdGhlIHNjaGVkdWxlX3dha2V1cCB0b29sOiBhZnRlciB0aGUgZGVsYXkgaXQgcmVjZWl2ZXMgaXRzIG93biBub3RlIGFzIGEgc3lzdGVtIG5vdGlmaWNhdGlvbiBhbmQgYWN0cyBvbiBpdC4gUmVjdXJyaW5nIGxvb3BzIGFyZSBqdXN0IHRoZSBhZ2VudCByZXNjaGVkdWxpbmcgYXQgdGhlIGVuZCBvZiBlYWNoIHdha2UtdXAuIFxcYC93YWtldXBzXFxgIGxpc3RzIHBlbmRpbmcgb25lcyB3aXRoIGxpdmUgY291bnRkb3duczsgZW50ZXIgb3IgXFxga1xcYCBjYW5jZWxzLiBBIFxcYFx1MjNGMCBOXFxgIGluIHRoZSBmb290ZXIgc2hvd3MgaG93IG1hbnkgYXJlIHBlbmRpbmcuIFdha2UtdXBzIGxpdmUgaW4gbWVtb3J5IGFuZCBhcmUgbG9zdCB3aGVuIHBpY28gZXhpdHMuXG5cbiMjIEFwcGVhcmFuY2VcblxucGljbyBwaWNrcyBhIGxpZ2h0IG9yIGRhcmsgcGFsZXR0ZSBhdCBzdGFydHVwIGJ5IGFza2luZyB0aGUgdGVybWluYWwgZm9yIGl0cyBiYWNrZ3JvdW5kIGNvbG9yIChPU0MgMTEpLCBzbyBpdCBtYXRjaGVzIHdoYXRldmVyIHRoZW1lIHlvdXIgdGVybWluYWwgdXNlcy4gXFxgL3RoZW1lXFxgIG9wZW5zIGEgcGlja2VyIHRoYXQgcHJldmlld3MgZWFjaCB0aGVtZSBhcyB5b3UgbW92ZSBhbmQgcGVyc2lzdHMgeW91ciBjaG9pY2UgaW4gXFxgfi8ucGljby9jb25maWcuanNvblxcYDsgXFxgL3RoZW1lIGxpZ2h0XFxgLCBcXGAvdGhlbWUgZGFya1xcYCwgb3IgXFxgL3RoZW1lIGF1dG9cXGAgYXBwbGllcyBvbmUgZGlyZWN0bHkuIFxcYC9jb2xvclxcYCB0aW50cyBhIHNpbmdsZSBzZXNzaW9uJ3MgYWNjZW50IGFuZCBpcyBpbmRlcGVuZGVudCBvZiB0aGUgcGFsZXR0ZS5cblxuIyMgQ29udGV4dFxuXG5waWNvIHJlYWRzIEFHRU5UUy5tZCBmaWxlcyBhdXRvbWF0aWNhbGx5OiBhIGdsb2JhbCBvbmUgZnJvbSB+Ly5waWNvLCB0aGVuIGV2ZXJ5IGFuY2VzdG9yIG9mIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgdXAgdG8gdGhlIGdpdCByb290LiBEZWVwZXIgZmlsZXMgd2luLiBBR0VOVFMubWQgZmlsZXMgaW4gc3ViZGlyZWN0b3JpZXMgbG9hZCBsYXppbHkgdGhlIGZpcnN0IHRpbWUgYSB0b29sIHRvdWNoZXMgdGhhdCBzdWJ0cmVlLlxuXG5TZXNzaW9ucyBhcmUgc3RvcmVkIHVuZGVyIH4vLnBpY28gYXMganNvbmwgZXZlbnQgbG9nczsgXFxgL3Jlc3VtZVxcYCBmb2xkcyBvbmUgYmFjayBpbnRvIGV4YWN0bHkgdGhpcyB2aWV3LlxuXG5cXGAvY29udGV4dFxcYCBicmVha3MgZG93biB3aGF0IHRoZSBuZXh0IHJlcXVlc3Qgd2lsbCBjb250YWluIC0gc3lzdGVtIHByb21wdCwgdG9vbCBzY2hlbWFzLCBwcm9qZWN0IGluc3RydWN0aW9ucywgbWVtb3J5IGluZGV4LCBjb21wYWN0aW9uIHN1bW1hcnksIGFuZCBjb252ZXJzYXRpb24gLSB3aXRoIGFuIGVzdGltYXRlZCBzaXplIGZvciBlYWNoIHBpZWNlIG5leHQgdG8gdGhlIHByb3ZpZGVyLW1lYXN1cmVkIHRvdGFsLlxuXG5UaGUgZm9vdGVyJ3MgXFxgY3R4ICVcXGAgc2hvd3MgaG93IGZ1bGwgdGhlIG1vZGVsJ3MgY29udGV4dCBpcy4gQXQgODUlIHBpY28gYXV0by1jb21wYWN0czogdGhlIG9sZGVyIGNvbnZlcnNhdGlvbiBpcyBzdW1tYXJpemVkIGluIGEgc3RydWN0dXJlZCBmb3JtLCB0aGUgbW9zdCByZWNlbnQgdHVybnMgYXJlIGtlcHQgdmVyYmF0aW0sIGFuZCB0aGUgbW9kZWwgaXMgdG9sZCB3aGVyZSB0aGUgZnVsbCBzZXNzaW9uIGZpbGUgbGl2ZXMgc28gaXQgY2FuIHJlYWQgZXhhY3QgZGV0YWlscyBiYWNrIG9uIGRlbWFuZC4gTm90aGluZyB2aXNpYmxlIGNoYW5nZXMgaW4gdGhlIHRyYW5zY3JpcHQsIGFuZCByZXdpbmQgc3RpbGwgd29ya3MgYWNyb3NzIGl0LiBcXGAvY29tcGFjdFxcYCBydW5zIGl0IG1hbnVhbGx5IGFuZCB0YWtlcyBvcHRpb25hbCBmb2N1cyBpbnN0cnVjdGlvbnMgKFxcYC9jb21wYWN0IGZvY3VzIG9uIHRoZSBBUEkgY2hhbmdlc1xcYCkuIFNldCBcXGBcImF1dG9Db21wYWN0XCI6IGZhbHNlXFxgIGluIFxcYH4vLnBpY28vY29uZmlnLmpzb25cXGAgdG8gZGlzYWJsZSB0aGUgYXV0b21hdGljIHRyaWdnZXIuXG5cbi0tLVxuXG4qZXNjIHRha2VzIHlvdSBiYWNrIHRvIHRoZSBjb252ZXJzYXRpb24qYFxuXG5leHBvcnQgZnVuY3Rpb24gSGVscCh7IGNvbW1hbmRzLCBvbkNsb3NlIH0pIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6ICcxMDAlJywgcGFkZGluZ1g6IDIsIHBhZGRpbmdZOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19PnBpY28gXHUwMEI3IGhlbHA8L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Plx1MjE5MVx1MjE5MyBzY3JvbGwgXHUwMEI3IGVzYyBiYWNrPC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkIHNjcm9sbGJhcj5cbiAgICAgICAgPE1hcmtkb3duIHRleHQ9e0hFTFBfVEVYVChjb21tYW5kcyl9IGNvZGVCZz17bnVsbH0gLz5cbiAgICAgIDwvU2Nyb2xsQm94PlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCBCdXR0b24sIE1lbnUsIFBpY2tMaXN0LCBSYWRpbywgU2Nyb2xsQm94LCBUZXh0SW5wdXQsIHVzZUZvY3VzLCB1c2VJbnB1dCwgdXNlSW50ZXJ2YWwgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBhY2NlbnQsIEZHLCBGR19TT0ZULCBNVVRFRCwgRkFJTlQsIFBBTkVMX0JHLCBTRUxFQ1RfQkcsIFJFRCB9IGZyb20gJy4vdGhlbWUuanMnXG5pbXBvcnQgeyBmdXp6eVNjb3JlIH0gZnJvbSAnLi9mdXp6eS5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVBZ28oYXQpIHtcbiAgY29uc3QgcyA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IoKERhdGUubm93KCkgLSBhdCkgLyAxMDAwKSlcbiAgaWYgKHMgPCA2MCkgcmV0dXJuIGAke3N9cyBhZ29gXG4gIGNvbnN0IG0gPSBNYXRoLmZsb29yKHMgLyA2MClcbiAgaWYgKG0gPCA2MCkgcmV0dXJuIGAke219bSBhZ29gXG4gIGNvbnN0IGggPSBNYXRoLmZsb29yKG0gLyA2MClcbiAgaWYgKGggPCAyNCkgcmV0dXJuIGAke2h9aCBhZ29gXG4gIHJldHVybiBgJHtNYXRoLmZsb29yKGggLyAyNCl9ZCBhZ29gXG59XG5cbmZ1bmN0aW9uIFBhbmVsRnJhbWUoeyB0aXRsZSwgaGludCwgcmlnaHQsIGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19Pnt0aXRsZX08L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAge3JpZ2h0fVxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2hpbnR9PC90ZXh0PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY29wZVRhYnMoeyBzY29wZXMsIGFjdGl2ZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgIHtzY29wZXMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgIDx0ZXh0IGtleT17c30gc3R5bGU9e3sgY29sb3I6IGkgPT09IGFjdGl2ZSA/IGFjY2VudCgpIDogRkFJTlQsIGJvbGQ6IGkgPT09IGFjdGl2ZSB9fT57YCR7aSA+IDAgPyAnICAnIDogJyd9JHtzfWB9PC90ZXh0PlxuICAgICAgKSl9XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vZGVsUGFuZWwoeyBtb2RlbHMsIGN1cnJlbnQsIGRlZmF1bHROYW1lLCBmb2N1c2VkLCBvblBpY2ssIG9uUGlja0RlZmF1bHQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gY3JlYXRlU2lnbmFsKG1vZGVsc1swXSB8fCBudWxsKVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgY3Vyc29yKCkpIHtcbiAgICAgIG9uUGlja0RlZmF1bHQoY3Vyc29yKCkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiU2VsZWN0IG1vZGVsXCIgaGludD1cInR5cGUgdG8gZmlsdGVyIFx1MDBCNyBlbnRlcjogdGhpcyBzZXNzaW9uIFx1MDBCNyBjdHJsK3M6IHNldCBhcyBkZWZhdWx0IFx1MDBCNyBlc2M6IGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICBpdGVtcz17bW9kZWxzfVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgbW9kZWxzLi4uXCJcbiAgICAgICAgICBmaWx0ZXI9eyhxLCBtKSA9PiBmdXp6eVNjb3JlKHEsIG0ubmFtZSkgPj0gMH1cbiAgICAgICAgICBvbkN1cnNvckNoYW5nZT17c2V0Q3Vyc29yfVxuICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgIGl0ZW1IZWlnaHQ9ezJ9XG4gICAgICAgICAgc2Nyb2xsb2ZmPXsxfVxuICAgICAgICAgIHJlbmRlckl0ZW09eyhtLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9mZiA9IG0uYXZhaWxhYmxlID09PSBmYWxzZVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgYm9sZDogIW9mZiwgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IG9mZiA/IE1VVEVEIDogRkcgfX0+e20ubmFtZX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICB7bS5uYW1lID09PSBjdXJyZW50ICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBhY2NlbnQoKSB9fT57JyBcdTI3MTMnfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgICB7bS5uYW1lID09PSBkZWZhdWx0TmFtZSAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogTVVURUQgfX0+eycgXHUwMEI3IGRlZmF1bHQnfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogTVVURUQgfX0+XG4gICAgICAgICAgICAgICAgICAgIHtvZmYgPyBgbmVlZHMgJHttLmtleUhpbnR9YCA6IG0ucHJpY2UgPyBgJCR7bS5wcmljZS5pbn0gaW4gXHUwMEI3ICQke20ucHJpY2Uub3V0fSBvdXRgIDogbS5wcm92aWRlciA9PT0gJ2NvZGV4JyA/ICdzdWJzY3JpcHRpb24nIDogJ3ByaWNlIHVua25vd24nfVxuICAgICAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBNVVRFRCB9fT57bS5kZXNjfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGlzdG9yeVBhbmVsKHsgcHJvbXB0cywgc2NvcGVzLCBzY29wZUluZGV4LCBmb2N1c2VkLCBvblBpY2ssIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBjcmVhdGVTaWduYWwocHJvbXB0c1swXSB8fCBudWxsKVxuICBjb25zdCBbcXVlcnksIHNldFF1ZXJ5XSA9IGNyZWF0ZVNpZ25hbCgnJylcbiAgY29uc3QgYW55TWF0Y2ggPSBwcm9tcHRzLnNvbWUoKHApID0+IGZ1enp5U2NvcmUocXVlcnkoKSwgcC50ZXh0KSA+PSAwKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWVcbiAgICAgIHRpdGxlPVwiU2VhcmNoIHByb21wdHNcIlxuICAgICAgaGludD1cInR5cGUgdG8gZmlsdGVyIFx1MDBCNyBcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgY3RybCtzIHNjb3BlIFx1MDBCNyBlbnRlciB0byBlZGl0IFx1MDBCNyBlc2MgdG8gY2xvc2VcIlxuICAgICAgcmlnaHQ9ezxTY29wZVRhYnMgc2NvcGVzPXtzY29wZXN9IGFjdGl2ZT17c2NvcGVJbmRleH0gLz59XG4gICAgPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxLCBnYXA6IDIgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnNTAlJyB9fT5cbiAgICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXtwcm9tcHRzfVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIHByb21wdHMuLi5cIlxuICAgICAgICAgICAgZmlsdGVyPXsocSwgcCkgPT4gZnV6enlTY29yZShxLCBwLnRleHQpID49IDB9XG4gICAgICAgICAgICBvbkNoYW5nZT17c2V0UXVlcnl9XG4gICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KHApID0+IHNldFByZXZpZXcocCl9XG4gICAgICAgICAgICBvblN1Ym1pdD17KHApID0+IG9uUGljayhwLnRleHQpfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhwLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PntwLnRleHQucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7dGltZUFnbyhwLmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7YW55TWF0Y2ggJiYgcHJldmlldygpID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PntwcmV2aWV3KCkudGV4dC5zbGljZSgwLCAyMDAwKX08L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBtYXRjaGluZyBwcm9tcHRzPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXdpbmRQaWNrUGFuZWwoeyBlbnRyaWVzLCBzdGF0cywgZm9jdXNlZCwgb25QaWNrLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKGVudHJpZXNbMF0gfHwgbnVsbClcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiUmV3aW5kIHRvIGEgbWVzc2FnZVwiIGhpbnQ9XCJ0eXBlIHRvIGZpbHRlciBcdTAwQjcgXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGVudGVyIHRvIGNob29zZSBcdTAwQjcgZXNjIHRvIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e2VudHJpZXN9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgbWVzc2FnZXMuLi5cIlxuICAgICAgICAgICAgZmlsdGVyPXsocSwgbSkgPT4gZnV6enlTY29yZShxLCBtLnRleHQpID49IDB9XG4gICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KG0pID0+IHNldFByZXZpZXcobSl9XG4gICAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhtLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PnttLnRleHQucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7c3RhdHMobS5pbmRleCkubXNnc30gYWZ0ZXJgfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldygpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PntwcmV2aWV3KCkudGV4dC5zbGljZSgwLCAyMDAwKX08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YHJld2luZGluZyBoZXJlIGRyb3BzICR7c3RhdHMocHJldmlldygpLmluZGV4KS5tc2dzfSBlbnRyaWVzYH08L3RleHQ+XG4gICAgICAgICAgICAgIHtzdGF0cyhwcmV2aWV3KCkuaW5kZXgpLmVkaXRzLm1hcCgobSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICBcdTIxQTkgJHttLnRpdGxlfWB9PC90ZXh0PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgbWVzc2FnZXM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJld2luZEFjdGlvblBhbmVsKHsgdGFyZ2V0LCBvcHRpb25zLCBmb2N1c2VkLCBvblN1Ym1pdCwgb25CYWNrIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19PlJld2luZCBvcHRpb25zPC90ZXh0PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PnsndG86ICd9PC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGR19TT0ZUIH19Pnt0YXJnZXQudGV4dC5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtvcHRpb25zfVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17NH1cbiAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9e29uU3VibWl0fVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkJhY2t9XG4gICAgICAgICAgcmVuZGVySXRlbT17KG8sIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57by5sYWJlbH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7by5kZXNjfWB9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PmVudGVyIHRvIGNvbmZpcm0gXHUwMEI3IGVzYyB0byBwaWNrIGEgZGlmZmVyZW50IG1lc3NhZ2U8L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gdXNlRXNjYXBlKGZvY3VzZWQsIG9uQ2xvc2UpIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKCkpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICBvbkNsb3NlKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVzdW1lUGFuZWwoeyBzZXNzaW9ucywgc2NvcGVzLCBzY29wZUluZGV4LCBsb2FkaW5nLCBmb2N1c2VkLCBvblBpY2ssIG9uRGVsZXRlLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKHNlc3Npb25zWzBdIHx8IG51bGwpXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnICYmIHByZXZpZXcoKSkge1xuICAgICAgb25EZWxldGUocHJldmlldygpKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJSZXN1bWUgYSBzZXNzaW9uXCJcbiAgICAgIGhpbnQ9XCJ0eXBlIHRvIGZpbHRlciBcdTAwQjcgXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGN0cmwrcyBzY29wZSBcdTAwQjcgZW50ZXIgdG8gcmVzdW1lIFx1MDBCNyBjdHJsK3ggZGVsZXRlIFx1MDBCNyBlc2MgdG8gY2xvc2VcIlxuICAgICAgcmlnaHQ9ezxTY29wZVRhYnMgc2NvcGVzPXtzY29wZXN9IGFjdGl2ZT17c2NvcGVJbmRleH0gLz59XG4gICAgPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxLCBnYXA6IDIgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnNTAlJyB9fT5cbiAgICAgICAgICB7bG9hZGluZyA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT5sb2FkaW5nIHNlc3Npb25zLi4uPC90ZXh0PlxuICAgICAgICAgICkgOiBzZXNzaW9ucy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gc2Vzc2lvbnMgaGVyZSB5ZXQ8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgIGl0ZW1zPXtzZXNzaW9uc31cbiAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiAhbG9hZGluZ31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgc2Vzc2lvbnMuLi5cIlxuICAgICAgICAgICAgICBmaWx0ZXI9eyhxLCBzKSA9PiBmdXp6eVNjb3JlKHEsIHMudGl0bGUpID49IDB9XG4gICAgICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXsocykgPT4gc2V0UHJldmlldyhzKX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIHNjcm9sbGJhclxuICAgICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICAgIHJlbmRlckl0ZW09eyhzLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgICAge3MuY29sb3IgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IHMuY29sb3IgfX0+eydcdTI1QUEgJ308L3RleHQ+fVxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PntzLnRpdGxlLnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHt0aW1lQWdvKHMuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAge3ByZXZpZXcoKSA/IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57cHJldmlldygpLnRpdGxlLnNsaWNlKDAsIDUwMCl9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake3ByZXZpZXcoKS50dXJuc30gJHtwcmV2aWV3KCkudHVybnMgPT09IDEgPyAndHVybicgOiAndHVybnMnfSBcdTAwQjcgJHt0aW1lQWdvKHByZXZpZXcoKS5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e3ByZXZpZXcoKS5oZWFkZXIucm9vdH08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHNlc3Npb25zPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFZmZvcnRQYW5lbCh7IGxldmVscywgY3VycmVudCwgZGVmYXVsdExldmVsLCBmb2N1c2VkLCBvblBpY2ssIG9uUGlja0RlZmF1bHQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IGl0ZW1zID0gbGV2ZWxzXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJykge1xuICAgICAgb25QaWNrRGVmYXVsdChpdGVtc1tjdXJzb3IoKV0pXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBsYWJlbCA9IChsKSA9PiAobC5rZXkgPT09IG51bGwgPyAnZGVmYXVsdCcgOiBsLmtleSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiVGhpbmtpbmcgZWZmb3J0XCIgaGludD1cImovayB0byBtb3ZlIFx1MDBCNyBlbnRlcjogdGhpcyBzZXNzaW9uIFx1MDBCNyBjdHJsK3M6IHNldCBhcyBkZWZhdWx0IFx1MDBCNyBlc2M6IGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgICBzZWxlY3RlZD17Y3Vyc29yKCl9XG4gICAgICAgICAgb25TZWxlY3Q9e3NldEN1cnNvcn1cbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgdmltS2V5c1xuICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgcmVuZGVySXRlbT17KGwsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntsYWJlbChsKS5wYWRFbmQoMTApfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntsLmRlc2N9PC90ZXh0PlxuICAgICAgICAgICAgICB7bC5rZXkgPT09IGN1cnJlbnQgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogTVVURUQgfX0+eycgIFx1MjcxMyd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAge2wua2V5ID09PSBkZWZhdWx0TGV2ZWwgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnICBcdTAwQjcgZGVmYXVsdCd9PC90ZXh0Pn1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUGFuZWwoeyB0aGVtZXMsIHByZWYsIGZvY3VzZWQsIG9uUGljaywgb25QcmV2aWV3LCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2N1cnNvciwgc2V0Q3Vyc29yXSA9IGNyZWF0ZVNpZ25hbChNYXRoLm1heCgwLCB0aGVtZXMuZmluZEluZGV4KCh0KSA9PiB0LmtleSA9PT0gcHJlZikpKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJUaGVtZVwiIGhpbnQ9XCJqL2sgdG8gbW92ZSBhbmQgcHJldmlldyBcdTAwQjcgZW50ZXIgdG8gYXBwbHkgXHUwMEI3IGVzYzogY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPE1lbnVcbiAgICAgICAgICBpdGVtcz17dGhlbWVzfVxuICAgICAgICAgIHNlbGVjdGVkPXtjdXJzb3IoKX1cbiAgICAgICAgICBvblNlbGVjdD17KGkpID0+IHtcbiAgICAgICAgICAgIHNldEN1cnNvcihpKVxuICAgICAgICAgICAgb25QcmV2aWV3KHRoZW1lc1tpXSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17Nn1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICByZW5kZXJJdGVtPXsodCwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e3Qua2V5LnBhZEVuZCgxMCl9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e3QuZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgIHt0LmtleSA9PT0gcHJlZiAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBNVVRFRCB9fT57JyAgXHUyNzEzJ308L3RleHQ+fVxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSW5mb0xpc3RQYW5lbCh7IHRpdGxlLCByb3dzLCBmb2N1c2VkLCBvbkNsb3NlIH0pIHtcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT17dGl0bGV9IGhpbnQ9XCJqL2sgb3IgXHUyMTkxXHUyMTkzIHRvIHNjcm9sbCBcdTAwQjcgZXNjIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IDE0LCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHtyb3dzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm90aGluZyBoZXJlIHlldDwvdGV4dD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8U2Nyb2xsQm94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IGZvY3VzZWQ9e2ZvY3VzZWR9IHNjcm9sbGJhcj5cbiAgICAgICAgICAgIHtyb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxib3gga2V5PXtgJHtyb3cubmFtZX0tJHtpfWB9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IGkgPT09IDAgPyAwIDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19Pntyb3cubmFtZX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgICAgICAgICB7cm93Lm5vdGUgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pntyb3cubm90ZX08L3RleHQ+fVxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57cm93LmRlc2MgfHwgJ25vIGRlc2NyaXB0aW9uJ308L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFByb2plY3RQYW5lbCh7IHByb2plY3RzLCBsb2FkaW5nLCBmb2N1c2VkLCBvblBpY2ssIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBjcmVhdGVTaWduYWwocHJvamVjdHNbMF0gfHwgbnVsbClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlN3aXRjaCBwcm9qZWN0XCIgaGludD1cInR5cGUgdG8gZmlsdGVyIFx1MDBCNyBcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgZW50ZXIgdG8ganVtcCB0byBpdHMgbGFzdCBzZXNzaW9uIFx1MDBCNyBlc2MgdG8gY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+bG9hZGluZyBwcm9qZWN0cy4uLjwvdGV4dD5cbiAgICAgICAgICApIDogcHJvamVjdHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIGtub3duIHByb2plY3RzIHlldDwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e3Byb2plY3RzfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmICFsb2FkaW5nfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBwcm9qZWN0cy4uLlwiXG4gICAgICAgICAgICAgIGZpbHRlcj17KHEsIHApID0+IGZ1enp5U2NvcmUocSwgcC5wYXRoKSA+PSAwfVxuICAgICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KHApID0+IHNldFByZXZpZXcocCl9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgICByZW5kZXJJdGVtPXsocCwgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIHtwLmxhdGVzdC5jb2xvciAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogcC5sYXRlc3QuY29sb3IgfX0+eydcdTI1QUEgJ308L3RleHQ+fVxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PntwLnBhdGh9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkFJTlQsIGRpbTogIXNlbGVjdGVkIH19PntgICAke3AuY3VycmVudCA/ICdjdXJyZW50IFx1MDBCNyAnIDogJyd9JHt0aW1lQWdvKHAubGF0ZXN0LmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIHtwcmV2aWV3KCkgPyAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntwcmV2aWV3KCkucGF0aH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZULCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57YGxhc3Q6ICR7cHJldmlldygpLmxhdGVzdC50aXRsZS5yZXBsYWNlKC9cXG4vZywgJyAnKX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgJHtwcmV2aWV3KCkuY291bnR9ICR7cHJldmlldygpLmNvdW50ID09PSAxID8gJ3Nlc3Npb24nIDogJ3Nlc3Npb25zJ30gXHUwMEI3ICR7dGltZUFnbyhwcmV2aWV3KCkubGF0ZXN0LmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gcHJvamVjdHM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNoZWxsc1BhbmVsKHsgdmVyc2lvbiwgc2hlbGxzLCByZWFkT3V0cHV0LCBmb2N1c2VkLCBvbktpbGwsIG9uRGlzbWlzcywgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFt2aWV3aW5nLCBzZXRWaWV3aW5nXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgKCkgPT4gKHZpZXdpbmcoKSA/IHNldFZpZXdpbmcobnVsbCkgOiBvbkNsb3NlKCkpKVxuICB2b2lkIHZlcnNpb25cblxuICBjb25zdCBzZWxlY3RlZCA9ICgpID0+IHNoZWxsc1tNYXRoLm1pbihpbmRleCgpLCBzaGVsbHMubGVuZ3RoIC0gMSldIHx8IG51bGxcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQgfHwgdmlld2luZygpKSByZXR1cm5cbiAgICBjb25zdCBzID0gc2VsZWN0ZWQoKVxuICAgIGlmIChzICYmIGV2ZW50LmtleSA9PT0gJ2snICYmICFldmVudC5jdHJsKSB7XG4gICAgICBvbktpbGwocylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfSBlbHNlIGlmIChzICYmIGV2ZW50LmtleSA9PT0gJ2QnICYmICFldmVudC5jdHJsKSB7XG4gICAgICBvbkRpc21pc3MocylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IHVwdGltZSA9IChzKSA9PiB7XG4gICAgY29uc3Qgc2VjcyA9IE1hdGguZmxvb3IoKChzLmVuZGVkQXQgfHwgRGF0ZS5ub3coKSkgLSBzLnN0YXJ0ZWRBdCkgLyAxMDAwKVxuICAgIHJldHVybiBzZWNzIDwgNjAgPyBgJHtzZWNzfXNgIDogYCR7TWF0aC5mbG9vcihzZWNzIC8gNjApfW0ke3NlY3MgJSA2MH1zYFxuICB9XG5cbiAgaWYgKHZpZXdpbmcoKSkge1xuICAgIGNvbnN0IG91dCA9IHJlYWRPdXRwdXQodmlld2luZygpKVxuICAgIGlmICghb3V0KSB7XG4gICAgICBzZXRWaWV3aW5nKG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxpbmVzID0gb3V0Lm91dHB1dCA/IG91dC5vdXRwdXQuc3BsaXQoJ1xcbicpIDogW11cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxQYW5lbEZyYW1lXG4gICAgICAgICAgdGl0bGU9e2BzaGVsbCAke291dC5pZH0gXHUwMEI3ICR7b3V0LmNvbW1hbmQuc2xpY2UoMCwgNjApfWB9XG4gICAgICAgICAgaGludD17YCR7b3V0LnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8gJ3J1bm5pbmcnIDogYGV4aXRlZCBcdTAwQjcgY29kZSAke291dC5leGl0Q29kZX1gfSBcdTAwQjcgJHtvdXQudG90YWxMaW5lc30gbGluZXMgXHUwMEI3IGovayBzY3JvbGwgXHUwMEI3IGVzYyBiYWNrYH1cbiAgICAgICAgPlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogMTYsIG1hcmdpblRvcDogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgIHtsaW5lcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBvdXRwdXQgeWV0PC90ZXh0PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkPXtmb2N1c2VkfSBzY3JvbGxPZmZzZXQ9ezFlOX0gb25TY3JvbGw9eygpID0+IHt9fSBzY3JvbGxiYXI+XG4gICAgICAgICAgICAgICAge2xpbmVzLm1hcCgobGluZSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkdfU09GVCB9fT57bGluZSB8fCAnICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1Njcm9sbEJveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgIDwvUGFuZWxGcmFtZT5cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiU2hlbGxzXCIgaGludD1cImVudGVyIHZpZXcgb3V0cHV0IFx1MDBCNyBrIGtpbGwgXHUwMEI3IGQgZGlzbWlzcyBcdTAwQjcgZXNjIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHtzaGVsbHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBiYWNrZ3JvdW5kIHNoZWxscyBcdTAwQjcgdGhlIGFnZW50IHN0YXJ0cyB0aGVtIHdpdGggYmFzaCBiYWNrZ3JvdW5kOiB0cnVlPC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17c2hlbGxzfVxuICAgICAgICAgICAgc2VsZWN0ZWQ9e2luZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0SW5kZXh9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17Nn1cbiAgICAgICAgICAgIHZpbUtleXM9e2ZhbHNlfVxuICAgICAgICAgICAgb25TdWJtaXQ9eyhzKSA9PiBzZXRWaWV3aW5nKHMuaWQpfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsocywgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHMuc3RhdHVzID09PSAncnVubmluZycgPyBhY2NlbnQoKSA6IHMuZXhpdENvZGUgPT09IDAgPyBNVVRFRCA6IFJFRCB9fT5cbiAgICAgICAgICAgICAgICAgIHtzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8gJ1x1MjY5OScgOiBzLmV4aXRDb2RlID09PSAwID8gJ1x1MjcxMycgOiAnXHUyNzE3J31cbiAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2AgJHtzLmlkLnBhZEVuZCgzKX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IGFjdGl2ZSA/IEZHIDogRkdfU09GVCB9fT57cy5jb21tYW5kfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7cy5zdGF0dXMgPT09ICdydW5uaW5nJyA/IGB1cCAke3VwdGltZShzKX1gIDogYGV4aXQgJHtzLmV4aXRDb2RlfSBcdTAwQjcgJHt1cHRpbWUocyl9YH1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbm5lY3RQYW5lbCh7IHByb3ZpZGVycywgZm9jdXNlZCwgb25Db25uZWN0LCBvbkRpc2Nvbm5lY3QsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgb25DbG9zZSlcblxuICBjb25zdCBzZWxlY3RlZCA9ICgpID0+IHByb3ZpZGVyc1tNYXRoLm1pbihpbmRleCgpLCBwcm92aWRlcnMubGVuZ3RoIC0gMSldIHx8IG51bGxcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGNvbnN0IHAgPSBzZWxlY3RlZCgpXG4gICAgaWYgKHAgJiYgZXZlbnQua2V5ID09PSAnZCcgJiYgIWV2ZW50LmN0cmwgJiYgcC5jb25uZWN0ZWQpIHtcbiAgICAgIG9uRGlzY29ubmVjdChwKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIkNvbm5lY3QgYSBzdWJzY3JpcHRpb25cIiBoaW50PVwiZW50ZXIgc2lnbiBpbiBcdTAwQjcgZCBkaXNjb25uZWN0IFx1MDBCNyBlc2MgY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPE1lbnVcbiAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgaXRlbXM9e3Byb3ZpZGVyc31cbiAgICAgICAgICBzZWxlY3RlZD17aW5kZXgoKX1cbiAgICAgICAgICBvblNlbGVjdD17c2V0SW5kZXh9XG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgIHZpbUtleXNcbiAgICAgICAgICBvblN1Ym1pdD17KHApID0+IG9uQ29ubmVjdChwKX1cbiAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICByZW5kZXJJdGVtPXsocCwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHAuY29ubmVjdGVkID8gYWNjZW50KCkgOiBNVVRFRCB9fT57cC5jb25uZWN0ZWQgPyAnXHUyNUFBJyA6ICdcdTI1QUInfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2AgJHtwLmxhYmVsfSAgYH08L3RleHQ+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IE1VVEVEIH19PlxuICAgICAgICAgICAgICAgICAge3AuY29ubmVjdGVkID8gYGNvbm5lY3RlZCR7cC5lbWFpbCA/IGAgYXMgJHtwLmVtYWlsfWAgOiAnJ31gIDogJ25vdCBjb25uZWN0ZWQnfVxuICAgICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBXYWtldXBzUGFuZWwoeyB3YWtldXBzLCBmb2N1c2VkLCBvbkNhbmNlbCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtpbmRleCwgc2V0SW5kZXhdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFt0aWNrLCBzZXRUaWNrXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgb25DbG9zZSlcbiAgdXNlSW50ZXJ2YWwoKCkgPT4gc2V0VGljaygodCkgPT4gdCArIDEpLCAxMDAwKVxuICB2b2lkIHRpY2soKVxuXG4gIGNvbnN0IHNlbGVjdGVkID0gKCkgPT4gd2FrZXVwc1tNYXRoLm1pbihpbmRleCgpLCB3YWtldXBzLmxlbmd0aCAtIDEpXSB8fCBudWxsXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBjb25zdCB3ID0gc2VsZWN0ZWQoKVxuICAgIGlmICh3ICYmIGV2ZW50LmtleSA9PT0gJ2snICYmICFldmVudC5jdHJsKSB7XG4gICAgICBvbkNhbmNlbCh3KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgY291bnRkb3duID0gKGF0KSA9PiB7XG4gICAgY29uc3Qgc2VjcyA9IE1hdGgubWF4KDAsIE1hdGgucm91bmQoKGF0IC0gRGF0ZS5ub3coKSkgLyAxMDAwKSlcbiAgICBpZiAoc2VjcyA8IDYwKSByZXR1cm4gYGluICR7c2Vjc31zYFxuICAgIGNvbnN0IG1pbnMgPSBNYXRoLmZsb29yKHNlY3MgLyA2MClcbiAgICBpZiAobWlucyA8IDYwKSByZXR1cm4gYGluICR7bWluc31tICR7c2VjcyAlIDYwfXNgXG4gICAgcmV0dXJuIGBpbiAke01hdGguZmxvb3IobWlucyAvIDYwKX1oICR7bWlucyAlIDYwfW1gXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiU2NoZWR1bGVkIHdha2UtdXBzXCIgaGludD1cImVudGVyIG9yIGsgY2FuY2VsIFx1MDBCNyBlc2MgY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAge3dha2V1cHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBwZW5kaW5nIHdha2UtdXBzIFx1MDBCNyB0aGUgYWdlbnQgc2NoZWR1bGVzIHRoZW0gd2l0aCBzY2hlZHVsZV93YWtldXA8L3RleHQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXt3YWtldXBzfVxuICAgICAgICAgICAgc2VsZWN0ZWQ9e2luZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0SW5kZXh9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICAgIGl0ZW1IZWlnaHQ9ezJ9XG4gICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICBvblN1Ym1pdD17KHcpID0+IG9uQ2FuY2VsKHcpfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsodywgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2BcdTIzRjAgJHt3LmlkfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19Pntjb3VudGRvd24ody5hdCl9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICAke25ldyBEYXRlKHcuYXQpLnRvTG9jYWxlVGltZVN0cmluZygpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSwgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eycgICAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IEZHX1NPRlQgfX0+e3cubm90ZS5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmNvbnN0IE1DUF9TVEFUVVMgPSB7XG4gIGNvbm5lY3RlZDogeyBpY29uOiAnXHUyNUFBJywgY29sb3I6IGFjY2VudCgpIH0sXG4gIGNvbm5lY3Rpbmc6IHsgaWNvbjogJ1x1MjVDQycsIGNvbG9yOiAnI2ZiYmYyNCcgfSxcbiAgZXJyb3I6IHsgaWNvbjogJ1x1MjcxNycsIGNvbG9yOiBSRUQgfSxcbiAgZGlzYWJsZWQ6IHsgaWNvbjogJ1x1MjVBQicsIGNvbG9yOiBGQUlOVCB9LFxuICBpZGxlOiB7IGljb246ICdcdTI1QUInLCBjb2xvcjogTVVURUQgfSxcbn1cblxuZnVuY3Rpb24gRm9ybUZpZWxkKHsgbGFiZWwsIGFjdGl2ZSwgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGQUlOVCB9fT57bGFiZWx9PC90ZXh0PlxuICAgICAge2NoaWxkcmVufVxuICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5mdW5jdGlvbiBNY3BBZGRGb3JtKHsgZm9jdXNlZCwgb25BZGQsIG9uSW52YWxpZCwgb25DYW5jZWwgfSkge1xuICBjb25zdCBbbmFtZSwgc2V0TmFtZV0gPSBjcmVhdGVTaWduYWwoJycpXG4gIGNvbnN0IFtzY29wZSwgc2V0U2NvcGVdID0gY3JlYXRlU2lnbmFsKCdnbG9iYWwnKVxuICBjb25zdCBbdHJhbnNwb3J0LCBzZXRUcmFuc3BvcnRdID0gY3JlYXRlU2lnbmFsKCdzdGRpbycpXG4gIGNvbnN0IFt0YXJnZXQsIHNldFRhcmdldF0gPSBjcmVhdGVTaWduYWwoJycpXG4gIGNvbnN0IFtoZWFkZXJzLCBzZXRIZWFkZXJzXSA9IGNyZWF0ZVNpZ25hbCgnJylcblxuICBjb25zdCBmbSA9IHVzZUZvY3VzKHsgaW5pdGlhbDogJ25hbWUnIH0pXG4gIGZtLml0ZW0oJ25hbWUnKVxuICBmbS5pdGVtKCdzY29wZScpXG4gIGZtLml0ZW0oJ3RyYW5zcG9ydCcpXG4gIGZtLml0ZW0oJ3RhcmdldCcpXG4gIGlmICh0cmFuc3BvcnQoKSA9PT0gJ2h0dHAnKSBmbS5pdGVtKCdoZWFkZXJzJylcbiAgZm0uaXRlbSgnYWRkJylcbiAgZm0uaXRlbSgnY2FuY2VsJylcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICBvbkNhbmNlbCgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBodHRwID0gdHJhbnNwb3J0KCkgPT09ICdodHRwJ1xuXG4gIGNvbnN0IHN1Ym1pdCA9ICgpID0+IHtcbiAgICBjb25zdCBzZXJ2ZXJOYW1lID0gbmFtZSgpLnRyaW0oKVxuICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0KCkudHJpbSgpXG4gICAgaWYgKCFzZXJ2ZXJOYW1lIHx8IC9cXHMvLnRlc3Qoc2VydmVyTmFtZSkpIHJldHVybiBvbkludmFsaWQoJ25hbWUgaXMgcmVxdWlyZWQgYW5kIGNhbm5vdCBjb250YWluIHNwYWNlcycpXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG9uSW52YWxpZChodHRwID8gJ3VybCBpcyByZXF1aXJlZCcgOiAnY29tbWFuZCBpcyByZXF1aXJlZCcpXG4gICAgaWYgKGh0dHAgJiYgIS9eaHR0cHM/OlxcL1xcLy8udGVzdCh2YWx1ZSkpIHJldHVybiBvbkludmFsaWQoJ3VybCBtdXN0IHN0YXJ0IHdpdGggaHR0cDovLyBvciBodHRwczovLycpXG4gICAgaWYgKCFodHRwICYmIC9eaHR0cHM/OlxcL1xcLy8udGVzdCh2YWx1ZSkpIHJldHVybiBvbkludmFsaWQoJ2Egc3RkaW8gY29tbWFuZCBjYW5ub3Qgc3RhcnQgd2l0aCBhIHVybDsgcGljayB0aGUgaHR0cCB0cmFuc3BvcnQnKVxuICAgIGNvbnN0IGV4dHJhID0gaGVhZGVycygpLnRyaW0oKVxuICAgIG9uQWRkKHNlcnZlck5hbWUsIGh0dHAgJiYgZXh0cmEgPyBgJHt2YWx1ZX0gJHtleHRyYX1gIDogdmFsdWUsIHNjb3BlKCkpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCJuYW1lXCIgYWN0aXZlPXtmbS5pcygnbmFtZScpfT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIDxUZXh0SW5wdXQgZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnbmFtZScpfSBwbGFjZWhvbGRlcj1cImxpbmVhclwiIG9uQ2hhbmdlPXtzZXROYW1lfSAvPlxuICAgICAgICA8L2JveD5cbiAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cInNjb3BlXCIgYWN0aXZlPXtmbS5pcygnc2NvcGUnKX0+XG4gICAgICAgIDxSYWRpbyBvcHRpb25zPXtbJ2dsb2JhbCcsICdwcm9qZWN0J119IHNlbGVjdGVkPXtzY29wZSgpfSBvbkNoYW5nZT17c2V0U2NvcGV9IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ3Njb3BlJyl9IC8+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCJ0cmFuc3BvcnRcIiBhY3RpdmU9e2ZtLmlzKCd0cmFuc3BvcnQnKX0+XG4gICAgICAgIDxSYWRpbyBvcHRpb25zPXtbJ3N0ZGlvJywgJ2h0dHAnXX0gc2VsZWN0ZWQ9e3RyYW5zcG9ydCgpfSBvbkNoYW5nZT17c2V0VHJhbnNwb3J0fSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCd0cmFuc3BvcnQnKX0gLz5cbiAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAgPEZvcm1GaWVsZCBsYWJlbD17aHR0cCA/ICd1cmwnIDogJ2NvbW1hbmQnfSBhY3RpdmU9e2ZtLmlzKCd0YXJnZXQnKX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICA8VGV4dElucHV0XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCd0YXJnZXQnKX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtodHRwID8gJ2h0dHBzOi8vbWNwLmxpbmVhci5hcHAvbWNwJyA6ICducHggLXkgQG1vZGVsY29udGV4dHByb3RvY29sL3NlcnZlci1maWxlc3lzdGVtIC90bXAnfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NldFRhcmdldH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2JveD5cbiAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAge2h0dHAgJiYgKFxuICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwiaGVhZGVycyBcdTAwQjcgb3B0aW9uYWxcIiBhY3RpdmU9e2ZtLmlzKCdoZWFkZXJzJyl9PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgIDxUZXh0SW5wdXQgZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnaGVhZGVycycpfSBwbGFjZWhvbGRlcj0nQXV0aG9yaXphdGlvbj1cIkJlYXJlciAuLi5cIiBYLVRlYW09XCJjb3JlXCInIG9uQ2hhbmdlPXtzZXRIZWFkZXJzfSAvPlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgICl9XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8QnV0dG9uIGxhYmVsPVwiYWRkXCIgb25QcmVzcz17c3VibWl0fSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdhZGQnKX0gLz5cbiAgICAgICAgPHRleHQ+ICA8L3RleHQ+XG4gICAgICAgIDxCdXR0b24gbGFiZWw9XCJjYW5jZWxcIiBvblByZXNzPXtvbkNhbmNlbH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnY2FuY2VsJyl9IHZhcmlhbnQ9XCJkaW1cIiAvPlxuICAgICAgPC9ib3g+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1jcFBhbmVsKHsgc2VydmVycywgZm9jdXNlZCwgb25Ub2dnbGUsIG9uUmVjb25uZWN0LCBvblJlbW92ZSwgb25BZGQsIG9uSW52YWxpZCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFthZGRpbmcsIHNldEFkZGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtpbmRleCwgc2V0SW5kZXhdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFt2aWV3aW5nLCBzZXRWaWV3aW5nXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCAmJiAhYWRkaW5nKCksICgpID0+ICh2aWV3aW5nKCkgPyBzZXRWaWV3aW5nKG51bGwpIDogb25DbG9zZSgpKSlcblxuICBjb25zdCBzZWxlY3RlZCA9ICgpID0+IHNlcnZlcnNbTWF0aC5taW4oaW5kZXgoKSwgc2VydmVycy5sZW5ndGggLSAxKV0gfHwgbnVsbFxuICBjb25zdCB2aWV3ZWQgPSAoKSA9PiBzZXJ2ZXJzLmZpbmQoKHMpID0+IHMubmFtZSA9PT0gdmlld2luZygpKSB8fCBudWxsXG5cbiAgaWYgKHZpZXdpbmcoKSAmJiB2aWV3ZWQoKSkge1xuICAgIGNvbnN0IHNlcnZlciA9IHZpZXdlZCgpXG4gICAgY29uc3QgZGVzY3JpYmUgPSAodCkgPT4gdC5kZXNjcmlwdGlvbi5yZXBsYWNlKC9eXFxbW15cXF1dKlxcXVxccyovLCAnJykudHJpbSgpIHx8ICdubyBkZXNjcmlwdGlvbidcbiAgICByZXR1cm4gKFxuICAgICAgPFBhbmVsRnJhbWVcbiAgICAgICAgdGl0bGU9e2BNQ1Agc2VydmVycyBcdTAwQjcgJHtzZXJ2ZXIubmFtZX0gXHUwMEI3ICR7c2VydmVyLnRvb2xzLmxlbmd0aH0gJHtzZXJ2ZXIudG9vbHMubGVuZ3RoID09PSAxID8gJ3Rvb2wnIDogJ3Rvb2xzJ31gfVxuICAgICAgICBoaW50PVwiai9rIG9yIFx1MjE5MVx1MjE5MyB0byBzY3JvbGwgXHUwMEI3IGVzYyBiYWNrIHRvIHNlcnZlcnNcIlxuICAgICAgPlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IDE0LCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge3NlcnZlci50b29scy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gdG9vbHMgcmVwb3J0ZWQgXHUwMEI3IGlzIHRoZSBzZXJ2ZXIgY29ubmVjdGVkPzwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkPXtmb2N1c2VkfSBzY3JvbGxiYXI+XG4gICAgICAgICAgICAgIHtzZXJ2ZXIudG9vbHMubWFwKCh0LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBrZXk9e3QubmFtZX0gc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogaSA9PT0gMCA/IDAgOiAxIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19Pnt0Lm5hbWV9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntkZXNjcmliZSh0KX08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L1BhbmVsRnJhbWU+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJNQ1Agc2VydmVyc1wiXG4gICAgICBoaW50PXthZGRpbmcoKVxuICAgICAgICA/ICd0YWIgbW92ZXMgYmV0d2VlbiBmaWVsZHMgXHUwMEI3IGovayArIHNwYWNlIHBpY2tzIGEgcmFkaW8gb3B0aW9uIFx1MDBCNyBlc2MgY2FuY2VscydcbiAgICAgICAgOiAnc3BhY2UvZW50ZXIgdG9nZ2xlIFx1MDBCNyB0IHRvb2xzIFx1MDBCNyByIHJlY29ubmVjdCBcdTAwQjcgYSBhZGQgXHUwMEI3IGQgcmVtb3ZlIFx1MDBCNyBlc2MgY2xvc2UnfVxuICAgID5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAge2FkZGluZygpID8gKFxuICAgICAgICAgIDxNY3BBZGRGb3JtXG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgb25BZGQ9eyhuYW1lLCBzcGVjLCBzY29wZSkgPT4ge1xuICAgICAgICAgICAgICBvbkFkZChuYW1lLCBzcGVjLCBzY29wZSlcbiAgICAgICAgICAgICAgc2V0QWRkaW5nKGZhbHNlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uSW52YWxpZD17b25JbnZhbGlkfVxuICAgICAgICAgICAgb25DYW5jZWw9eygpID0+IHNldEFkZGluZyhmYWxzZSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IHNlcnZlcnMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBNQ1Agc2VydmVycyBjb25maWd1cmVkIFx1MDBCNyBwcmVzcyBhIHRvIGFkZCBvbmU8L3RleHQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXtzZXJ2ZXJzfVxuICAgICAgICAgICAgc2VsZWN0ZWQ9e2luZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0SW5kZXh9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17Nn1cbiAgICAgICAgICAgIHZpbUtleXNcbiAgICAgICAgICAgIG9uU3VibWl0PXsocykgPT4gb25Ub2dnbGUocy5uYW1lKX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KHMsIHsgYWN0aXZlIH0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3QgPSBNQ1BfU1RBVFVTW3Muc3RhdHVzXSB8fCBNQ1BfU1RBVFVTLmlkbGVcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzdC5jb2xvciB9fT57c3QuaWNvbn08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57YCAke3MubmFtZS5wYWRFbmQoMTQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAge3Muc2NvcGUgPT09ICdwcm9qZWN0JyAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eydcdTAwQjdwICd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzLnN0YXR1cyA9PT0gJ2Vycm9yJyA/IFJFRCA6IE1VVEVEIH19PlxuICAgICAgICAgICAgICAgICAgICAgIHtzLnN0YXR1cyA9PT0gJ2Vycm9yJyA/IHMuZXJyb3IgOiBzLnN0YXR1cyA9PT0gJ2Nvbm5lY3RlZCcgPyBgJHtzLnRvb2xDb3VudH0gdG9vbHNgIDogcy5zdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5ULCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57YCAgJHtzLmNvbW1hbmQuc2xpY2UoMCwgNDApfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICAgIHshYWRkaW5nKCkgJiYgKFxuICAgICAgICA8TWNwS2V5c1xuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgb25LZXk9eyhrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSBzZWxlY3RlZCgpXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnYScpIHNldEFkZGluZyh0cnVlKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICcgJykgb25Ub2dnbGUocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICdyJykgb25SZWNvbm5lY3Qocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICdkJykgb25SZW1vdmUocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICd0Jykgc2V0Vmlld2luZyhzLm5hbWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmZ1bmN0aW9uIE1jcEtleXMoeyBmb2N1c2VkLCBvbktleSB9KSB7XG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKFsnICcsICdhJywgJ3InLCAnZCcsICd0J10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgb25LZXkoZXZlbnQua2V5KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG4gIHJldHVybiBudWxsXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7OztBQUFBLFNBQVMsZUFBZTtBQVNqQixTQUFTLGFBQWEsTUFBTSxRQUFRLEtBQUs7QUFDOUMsUUFBTUEsUUFBTyxDQUFDO0FBQ2QsYUFBVyxLQUFLLFdBQVc7QUFDekIsVUFBTSxPQUFPLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUNyQyxRQUFJLEtBQU0sQ0FBQUEsTUFBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUk7QUFBQSxFQUNqQztBQUNBLFNBQU9BO0FBQ1Q7QUFFTyxTQUFTLFVBQVVBLE9BQU07QUFDOUIsVUFBUUEsS0FBSTtBQUNaLFNBQU8sT0FBTyxLQUFLQSxLQUFJO0FBQ3pCO0FBRU8sU0FBUyxRQUFRLFlBQVk7QUFDbEMsU0FBTyxVQUFVLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLFlBQVksQ0FBQztBQUMxRjtBQXpCQSxJQUVNO0FBRk47QUFBQTtBQUVBLElBQU0sWUFBWTtBQUFBLE1BQ2hCLEVBQUUsSUFBSSxVQUFVLE9BQU8sVUFBVSxLQUFLLENBQUMsa0JBQWtCLG1CQUFtQixFQUFFO0FBQUEsTUFDOUUsRUFBRSxJQUFJLGFBQWEsT0FBTyxVQUFVLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtBQUFBLE1BQy9ELEVBQUUsSUFBSSxVQUFVLE9BQU8sVUFBVSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7QUFBQSxNQUN6RCxFQUFFLElBQUksT0FBTyxPQUFPLFFBQVEsS0FBSyxDQUFDLGFBQWEsRUFBRTtBQUFBLElBQ25EO0FBQUE7QUFBQTs7O0FDUE8sU0FBUyxVQUFVQyxTQUFRLE1BQU07QUFDdEMsU0FBT0EsUUFBTyxLQUFLLENBQUMsTUFBTSxFQUFFLFNB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OyIsCiAgIm5hbWVzIjogWyJrZXlzIiwgIm1vZGVscyIsICJtb2RlbCIsICJqb2luIiwgInByb3ZpZGVycyIsICJjYWNoZWQiLCAibW9kZWxzIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJqb2luIiwgImNhY2hlRmlsZSIsICJjYWNoZWQiLCAiVFRMIiwgIm1vZGVscyIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJyZXNvbHZlIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJqb2luIiwgImNvbmZpZyIsICJleGlzdHNTeW5jIiwgImhvbWVkaXIiLCAiZGlybmFtZSIsICJqb2luIiwgInJlc29sdmUiLCAicmVhZEZpbGUiLCAiam9pbiIsICJyZWFkRmlsZSIsICJyZWFkZGlyIiwgImpvaW4iLCAic2NhbkRpciIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiY29uZmlnIiwgInNjb3BlIiwgInBlbmRpbmciLCAicmVnaXN0cnkiLCAicmVhZEZpbGUiLCAicmVhZGRpciIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJzY2FuRGlyIiwgInNjb3BlIiwgImhvbWVkaXIiLCAic2hlbGxzIiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAiam9pbiIsICJzY29wZSIsICJwYXJzZUFyZ3MiLCAicmVhZEZpbGUiLCAicmVhZEZpbGUiLCAicmVzb2x2ZSIsICJNQVhfTElORVMiLCAibWtkaXIiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImRpcm5hbWUiLCAicmVzb2x2ZSIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAicmVzb2x2ZSIsICJzaGVsbHMiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJyZXNvbHZlIiwgImV4ZWNGaWxlIiwgInJlc29sdmUiLCAiTUFYX1JFU1VMVFMiLCAic2hlbGxzIiwgIndha2V1cHMiLCAic2NvcGUiLCAiZXhpc3RzU3luYyIsICJqb2luIiwgIm1vZGVscyIsICJwcm92aWRlcnMiLCAiY2hhdGdwdCIsICJjYXRhbG9nRGF0YSIsICJjb2RleENyZWRzIiwgImNvbmZpZyIsICJtb2RlbCIsICJib290IiwgInNoZWxscyIsICJyZWFkRmlsZVN5bmMiLCAicmVzb2x2ZSIsICJ0aGVtZSIsICJ3YWtldXBzIiwgImV4aXN0c1N5bmMiLCAid3JpdGVGaWxlIiwgImhvbWVkaXIiLCAiam9pbiIsICJjcmVhdGVTaWduYWwiLCAiTWVudSIsICJTY3JvbGxCb3giLCAidXNlRm9jdXMiLCAidXNlSW5wdXQiLCAiYXBwZW5kRmlsZSIsICJyZWFkRmlsZSIsICJyZWFkZGlyIiwgImpvaW4iLCAic2NvcGUiLCAicmVhZGRpciIsICJzdGF0IiwgImpvaW4iLCAic2NhbkRpciIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJmZyIsICJUVEwiLCAicmVzb2x2ZSIsICJjcmVhdGVTaWduYWwiLCAiY3JlYXRlU2lnbmFsIiwgInRoZW1lIiwgImZhaWxlZCIsICJ2ZXJzaW9uIiwgIk1hcmtkb3duIiwgImpzeCIsICJqc3hzIiwgIk1hcmtkb3duIiwgImNyZWF0ZVNpZ25hbCIsICJTY3JvbGxCb3giLCAidXNlSW5wdXQiLCAianN4IiwgImpzeHMiLCAibW9kZWxzIiwgImNyZWF0ZVNpZ25hbCIsICJ1c2VJbnB1dCIsICJTY3JvbGxCb3giLCAidmVyc2lvbiIsICJzaGVsbHMiLCAicHJvdmlkZXJzIiwgIndha2V1cHMiLCAic2NvcGUiLCAianN4IiwgImpzeHMiLCAiYm9vdCIsICJ2ZXJzaW9uIiwgIm1vZGVscyIsICJjcmVhdGVTaWduYWwiLCAibW9kZWwiLCAiZGVmYXVsdE1vZGVsIiwgIml0ZW1zIiwgInVzYWdlIiwgImpvaW4iLCAid3JpdGVGaWxlIiwgImhvbWVkaXIiLCAidXNlRm9jdXMiLCAidXNlSW5wdXQiLCAiZXhpc3RzU3luYyIsICJTY3JvbGxCb3giLCAiTWVudSIsICJzY29wZSIsICJqc3giLCAicmVhZEZpbGVTeW5jIiwgImNvbm5lY3RPcGVuQUkiLCAicnVuSGVhZGxlc3MiXQp9Cg==
|